博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET----线程数据插槽
阅读量:5170 次
发布时间:2019-06-13

本文共 1159 字,大约阅读时间需要 3 分钟。

 
using
System;
using
System.Threading;
namespace
NET.MST.Seventh.ThreadDataSlot
{
class
MainClass
{
///
<summary>
///
测试数据插槽
///
</summary>
static
void
Main()
{
Console.WriteLine(
"
现在开始测试数据插槽
"
);
//
开辟五个线程来同时运行
//
这里不适合用线程池,
//
因为线程池内的线程会被反复使用
//
导致线程ID一致
for
(
int
i
=
0
; i
<
5
; i
++
)
{
Thread thread
=
new
Thread(ThreadDataSlot.Work);
thread.Start();
}
Console.Read();
}
}
///
<summary>
///
包含线程方法和数据插槽
///
</summary>
class
ThreadDataSlot
{
//
分配一个数据插槽,注意插槽本身是全局可见的,
//
因为这里的分配是在所有线程的TLS内建立数据块
static
LocalDataStoreSlot _localSlot
=
Thread.AllocateDataSlot();
///
<summary>
///
线程方法,操作数据插槽来存放数据
///
</summary>
public
static
void
Work()
{
//
这里把线程ID存放在数据插槽内
//
一个应用程序内线程ID不会重复
Thread.SetData(_localSlot,
Thread.CurrentThread.ManagedThreadId);
//
查看一下刚刚插入的数据
Console.WriteLine(
"
线程{0}内的数据是:{1}
"
,
Thread.CurrentThread.ManagedThreadId.ToString(),
Thread.GetData(_localSlot).ToString());
//
这里线程睡眠1秒
Thread.Sleep(
1000
);
//
查看其它线程的运行是否干扰了当前线程数据插槽内的数据
Console.WriteLine(
"
线程{0}内的数据是:{1}
"
,
Thread.CurrentThread.ManagedThreadId.ToString(),
Thread.GetData(_localSlot).ToString());
}
}
}

转载于:https://www.cnblogs.com/brainmao/archive/2011/06/06/2073883.html

你可能感兴趣的文章
【Ruby】Ruby在Windows上的安装
查看>>
Objective C 总结(十一):KVC
查看>>
BZOJ 3747 洛谷 3582 [POI2015]Kinoman
查看>>
vue实战(7):完整开发登录页面(一)
查看>>
Visual Studio自定义模板(二)
查看>>
【Mood-20】滴滤咖啡做法 IT工程师加班必备 更健康的coffee 项目经理加班密鉴
查看>>
读《构建之法-软件工程》第四章有感
查看>>
使用 Printf via SWO/SWV 输出调试信息
查看>>
.net 分布式架构之分布式锁实现(转)
查看>>
Problem E: Automatic Editing
查看>>
SpringBoot 使用 MyBatis 分页插件 PageHelper 进行分页查询
查看>>
《DSP using MATLAB》Problem 6.17
查看>>
微信公众平台开发实战Java版之如何网页授权获取用户基本信息
查看>>
一周TDD小结
查看>>
sizeof与strlen的用法
查看>>
Linux 下常见目录及其功能
查看>>
开源框架中常用的php函数
查看>>
nginx 的提升多个小文件访问的性能模块
查看>>
set&map
查看>>
集合类总结
查看>>