zoukankan      html  css  js  c++  java
  • 每天学习一点.net(4) 线程池和执行上下文ExectutionContext

    每个线程都关联了一个执行上下文(ExecutionContext)数据结构。执行上下文包括安全设置(压缩栈、Thread的Principal属性和Windows身份)、宿主(System.Threading.HostExecutionContextManager)以及逻辑调用上下文数据(System.Runtime.Messaging.CallContext的LogicalSetData和LogicalGetData方法)

    当主线程启动另一个线程时,执行上下文就会由主线程流向辅助线程。可利用ExecutionContext类控制执行上下文的流动。一个典型的

    using System;
    using System.Threading;
    using System.Diagnostics;
    public static class program
    {
        public static void Main()
        {
    
            System.Runtime.Remoting.Messaging.CallContext.LogicalSetData("Name", "Jeffery");
           /*此时辅助线程能访问主线程逻辑上下文调用数据*/
            ThreadPool.QueueUserWorkItem(state=>Console.WriteLine("name={0}",System.Runtime.Remoting.Messaging.CallContext.LogicalGetData("Name")));
            /*利用SuppressFlow阻止上下文流动*/
    
    
            ExecutionContext.SuppressFlow();
    
            /*此时辅助线程不能访问主线程逻辑上下文调用数据*/
            ThreadPool.QueueUserWorkItem(state => Console.WriteLine("name={0}", System.Runtime.Remoting.Messaging.CallContext.LogicalGetData("Name")));
           
            /*储存此时的执行上下文*/
            ExecutionContext.RestoreFlow();
            Console.ReadLine();
        }
    }
    
     
    
  • 相关阅读:
    根据表生成接收(zml)
    删除指定日期,指定设备的排产记录(zml)
    1029 Median
    1027 Colors in Mars (20 分)进制转换
    1028 List Sorting 排序
    1025 PAT Ranking
    1024 Palindromic Number(大数加法)
    1023 Have Fun with Numbers
    1022 Digital Library
    逆序打印乘法表
  • 原文地址:https://www.cnblogs.com/marsblog/p/3137031.html
Copyright © 2011-2022 走看看