gpt4 book ai didi

c# - Thread.Yield 是否会让 CPU 将上下文切换到同一进程或同一处理器中的其他线程?

转载 作者:太空宇宙 更新时间:2023-11-03 21:36:18 25 4
gpt4 key购买 nike

我在 Joseph Albahari 的线程书籍 ( http://www.albahari.com/threading/ ) 中看到以下内容

Thread.Sleep(0) relinquishes the thread’s current time slice immediately, voluntarily handing over the CPU to other threads. Framework 4.0’s new Thread.Yield() method does the same thing — except that it relinquishes only to threads running on the same processor.

上下文切换是否发生在同一进程中的其他线程或正在等待获取 CPU 的线程之间?

如果答案是后者,有什么方法可以将上下文切换到同一进程中处于等待状态的其他线程?

我明白线程调度已经被操作系统处理了。但是,由于 Thread.Sleep(0) 并试图找到解决方案而遇到了问题。

编辑以更清楚地了解问题:

该软件有两个线程(比如 A 和 B),A 将等待来自 B 的信号 20 毫秒,然后不管信号如何继续执行。 A 设置信号并让处理器继续 B,应用 Thread.Sleep(0),因为该软件是时间关键型应用程序,每一秒都很重要。一秒钟,A 和 B 都没有继续并恢复(在日志的帮助下知道)。我们认为同一处理器中的其他一些进程获得了 CPU 时间片,现在正在寻找替代方案。

最佳答案

Thread.Yield 方法将切换到任何准备好在当前处理器上运行的线程。不区分Thread存在于哪个进程

关于c# - Thread.Yield 是否会让 CPU 将上下文切换到同一进程或同一处理器中的其他线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21621952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com