Ere*_*rez 2 .net c# multithreading race-condition
有人可以解释一下这个:
如果在代码中的任何地方插入Thread.Yield()会导致或破坏程序,那么几乎肯定会有错误.
我只能猜测作者的意图,但是:线程调度已经不确定了.如果添加yield使其工作,那么我推断这里的现实是它依赖于竞争条件的副作用,即将一些CPU提供给另一个线程允许时间重合以便正确的事情发生.好吧,你不知道你在并行系统上会得到什么,而在一个milticore系统上,你很可能不会屈服于同样的事情(产量只是同一个CPU).这样,唯一明智的方式做到这一点是具有结构如监视器,互斥锁,信号灯,ResetEvent,或一些其它的锁定原始设计用于允许线程和(有时)的进程之间的受控流动.