c# - Thread.Yield 假设的解释

标签 c# .net multithreading race-condition

谁能给我解释一下:

if inserting Thread.Yield() anywhere in your code makes or breaks the program, you almost certainly have a bug.

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

最佳答案

我只能猜测作者的意图,但是:线程调度已经不确定。如果添加 yield 使其工作,那么我推断这里的现实是它依赖于竞争条件的副作用,即给另一个线程一些 CPU 允许时间重合,以便发生正确的事情。好吧,您不知道在并行系统上您屈服于什么,而在 milticore 系统上您可能不会屈服于同一件事(产量相同仅 CPU)。因此,唯一理智的方法是使用 Monitor、Mutex、Semaphore、ResetEvent 等结构,或设计用于允许线程和(有时)进程之间的受控流的其他一些锁定原语。

关于c# - Thread.Yield 假设的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968969/

相关文章:

c# - 在不使用 Regasm 的情况下在 C++ 代码中使用 C# dll

c# - ASP Identity 和 Owin - token 生成

c# - 对于接口(interface) : T[], IEnumerable<T>、IList<T> 或其他接口(interface),您更喜欢哪个?

c - 如何将全局变量或环境从主状态转移到 Lua channel ?

VB.NET 多线程。从单独的类文件中的类调用 UI 控件的 invoke

c# - 如何确定 C# 数据访问层中存储过程输出参数的大小属性

c# - 获取 .NET 中当前事件的托管线程的列表?

c# - C# 中的简单 LINQ 问题

c# - 有没有办法将旧日志文件从 log4net RollingLogFileAppender 移动到不同的文件夹?

python3中的多线程