谁能给我解释一下:
if inserting Thread.Yield() anywhere in your code makes or breaks the program, you almost certainly have a bug.
最佳答案
我只能猜测作者的意图,但是:线程调度已经不确定。如果添加 yield 使其工作,那么我推断这里的现实是它依赖于竞争条件的副作用,即给另一个线程一些 CPU 允许时间重合,以便发生正确的事情。好吧,您不知道在并行系统上您屈服于什么,而在 milticore 系统上您可能不会屈服于同一件事(产量相同仅 CPU)。因此,唯一理智的方法是使用 Monitor、Mutex、Semaphore、ResetEvent 等结构,或设计用于允许线程和(有时)进程之间的受控流的其他一些锁定原语。
关于c# - Thread.Yield 假设的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968969/