如何检查调用线程是否启用了线程关联?

时间:2013-11-22 15:40:06

标签: c# .net multithreading winapi affinity

如果我要构建一个库,我可能会有一个静态函数,它在函数的开头执行Thread.BeginThreadAffinity(),在函数的结尾或者终结函数中执行Thread.EndThreadAffinity(),因为我想强制执行托管到OS(本机)线程的一对一映射:

public static void DoSomething()
{
    Thread.BeginThreadAffinity()
    // Do something, like a few P/Invokes that would require me to have thread affinity.
    Thread.EndThreadAffinity()
}

问题是:如果调用者在调用DoSomething()之前已经在其线程上具有线程关联,我可能想检查线程关联是否已经在当前线程上,以便在我的函数的终结器中,我没有结束调用者的线程亲和力。那么,有没有办法检查调用线程是否启用了关联?如果没有,我可能必须为每次调用此静态函数生成一个新线程并等待AutoResetEvent。

0 个答案:

没有答案