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();
        }
    }
    
     
    
  • 相关阅读:
    Construct Binary Tree From Inorder and Postorder Traversal
    Construct Binary Tree From Preorder and Inorder Traversal **
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
    Flatten Binary Tree to Linked List
    E1总结和CISCO E1配置
    Dial-peer匹配顺序
    CUCM来实现PLAR
    CUCM实现Extension Mobility
    语音笔记20 URI
  • 原文地址:https://www.cnblogs.com/marsblog/p/3137031.html
Copyright © 2011-2022 走看看