今天复习看<<CLR via C#>>时看到关于各线程上下文传递,笔记一下。
---------------------------------------------------------
每个线程都关联一个执行上下文数据结构。执行上下文包括的东西又安全设置、宿主设置以及逻辑调用上下文数据。默认情况,CLR自动造成初始线程的执行上下文向任何辅助线程“流”去,会把它们【复制】到辅助线程。
namespace ConsoleAppDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(" Begin ");
CallContext.LogicalSetData("name", "vezn");//设置参数
bool result = ThreadPool.QueueUserWorkItem(ComputeBoundOp); //将方法加入线程池队列
ExecutionContext.SuppressFlow(); //阻止Main线程的执行上下文流动
result = ThreadPool.QueueUserWorkItem(ComputeBoundOp1);
Console.WriteLine(" Main :{0}", CallContext.LogicalGetData("name"));
Console.Read();
}
private static void ComputeBoundOp(object state)
{
Console.WriteLine(" In ComputeBoundOp: {0}", CallContext.LogicalGetData("name"));
Thread.Sleep(5000);
}
private static void ComputeBoundOp1(object state)
{
Console.WriteLine(" In ComputeBoundOp1: {0}", CallContext.LogicalGetData("name"));
Thread.Sleep(10000);
}
}
}