繁体   English   中英

Thread.Yield假设的解释

[英]explanation to Thread.Yield assumption

有人可以向我解释一下:

如果在代码中的任意位置插入Thread.Yield()会破坏程序,则几乎可以肯定会出现错误。

我在这里阅读过: http : //www.albahari.com/threading/

我只能猜测作者的意图,但是:线程调度已经不确定。 如果增加产量使它能够工作,那么我推断这里的现实是它依赖于竞争条件的副作用,即,将CPU分配给另一个线程可以使时间重合,从而发生正确的事情。 好吧,您不知道在并行系统上要获得什么 ,而在军用系统上,您很可能不屈服于同一件事(产量仅是同一CPU)。 这样,唯一可行的方法就是使用诸如Monitor,Mutex,Semaphore,ResetEvent之类的结构,或其他一些旨在允许线程和(有时)进程之间进行受控流的锁定原语。

我在这里讨论的假设是Thread.Yield生成一个隐式内存屏障。 如果遇到内存障碍问题,可以通过添加对Thread.Yield的调用来Thread.Yield 这类似于使用Thread.Sleep模拟线程交织实际上可以掩盖问题的方式。 同样, Thread.Yield显然会改变执行指令的时间,这可能会影响是否遵守竞争条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM