是否一个线程开始有内隐记忆障碍?(Does a thread start have implicit

2019-09-17 08:19发布

即当我开始一个新的线程,是安全的读取新启动的线程的线程开始前初始化的变量?

UPD为什么我问? 由于一些开发商认为它确实有,并且不使用任何明确的内存屏障在那里。 我不能在该代码复制任何错误。 然而,文件http://msdn.microsoft.com/en-us/library/ms686355(v=vs.85).aspx不说这是安全的。

Answer 1:

是的,操作系统提供了隐性障碍。 它不能获得线程开始没有采取一个内部锁保护线程调度数据结构。

这是没有明确答应 ,我知道的。 由于.NET 2.0,不再有一个线程和一个ProcessThread之间的直接对应关系。 此链接在那想实现与光纤线程SQL Server团队的要求打破。 这实际上并没有发生,他们放弃了这个项目的时候,他们不能让它足够可靠。 鉴于这个项目,并没有主流的项目中,我知道那的结果曾经试图再次利用这一优势,以及实现线程支持的不使用锁定的困难,我会说这是安全的假设你可以依靠的隐性障碍。



文章来源: Does a thread start have implicit memory barrier?
标签: .net clr