bio*_*inc 5 .net clr multithreading
我知道托管线程不能保证在同一个OS线程上运行.
如果CLR可以在OS线程之间切换托管线程,这种情况多久发生一次?什么影响频率?
我有一个关于如何阻止转换发生的单独问题.对我来说,二等奖不会经常发生(每分钟不到一次就好了).
它完全取决于主机.在给定任何特定主机的情况下,无法保证何时何地可以进行线程切换(如果有的话).
但是,从.NET 2.0开始,您就可以调用静态BeginThreadAffinity方法来通知主机正在运行的代码取决于底层OS线程的标识:
http://msdn.microsoft.com/en-us/library/system.threading.thread.beginthreadaffinity(VS.80).aspx
当然,确保在线程完成时调用EndThreadAffinity方法(我不确定如果你让线程结束而不调用EndThreadAffinity会发生什么.我无法想象它会产生影响,但最好是在这个问题上明确,IMO):
http://msdn.microsoft.com/en-us/library/system.threading.thread.endthreadaffinity(VS.80).aspx
| 归档时间: |
|
| 查看次数: |
552 次 |
| 最近记录: |