示例#1
0
文件: ThreadEx.cs 项目: dadhi/ecsharp
 static void DeinitThreadLocalVars()
 {
     // Notify thread-local variables of termination
     for (int i = 0; i < _TLVs.Count; i++)
     {
         ThreadLocalVariableBase v = _TLVs[i].Target();
         if (v != null)
         {
             v.Terminate(Thread.CurrentThread.ManagedThreadId);
         }
     }
 }
示例#2
0
文件: ThreadEx.cs 项目: dadhi/ecsharp
 internal static void RegisterTLV(ThreadLocalVariableBase tlv)
 {
     lock (_TLVs) {
         for (int i = 0; i < _TLVs.Count; i++)
         {
             if (!_TLVs[i].IsAlive())
             {
                 _TLVs[i].SetTarget(tlv);
                 return;
             }
         }
         _TLVs.Add(new WeakReference <ThreadLocalVariableBase>(tlv));
     }
 }
示例#3
0
文件: ThreadEx.cs 项目: dadhi/ecsharp
        static bool InheritThreadLocalVars(int parentThreadId)
        {
            int threadId;

            if (!_areThreadVarsInitialized && (threadId = Thread.CurrentThread.ManagedThreadId) != parentThreadId)
            {
                _areThreadVarsInitialized = true;
                for (int i = 0; i < _TLVs.Count; i++)
                {
                    ThreadLocalVariableBase v = _TLVs[i].Target();
                    if (v != null)
                    {
                        v.Propagate(parentThreadId, threadId);
                    }
                }
                return(true);
            }
            return(false);
        }