多线程-数据槽

来源:互联网 发布:js 2小时倒计时代码 编辑:程序博客网 时间:2024/04/30 03:53

数据槽的一个典型应用就是Thread.CurrentXXX,CurrentXXX是一个静态属性,但在任务线程中的Thread.CurrentXXX调用都会得到与这个线程相关的数据

也就是说数据槽可以实现在静态字段中存储线程相关信息而不会互相覆盖的功能,示例代码如下:

class Program{    static void Main(string[] args)    {        Console.WriteLine(ThreadHelp.CurrentThreadId);        new Thread(TProc).Start();        Console.ReadLine();    }    static void TProc()    {        Console.WriteLine(ThreadHelp.CurrentThreadId);    }}class ThreadHelp{    static private LocalDataStoreSlot slot = Thread.AllocateDataSlot();    static public string CurrentThreadId    {        get         {            if (Thread.GetData(slot) == null)                Thread.SetData(slot, Thread.CurrentThread.ManagedThreadId.ToString());            return (string)Thread.GetData(slot);        }    }}