gpt4 book ai didi

c# - 临界区可以无限期地停止处理器吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:01 26 4
gpt4 key购买 nike

假设我有类似于以下的代码:

var obj = new object();
lock (obj)
{
while (true);
}

由于循环将永远运行,并且由于循环位于临界区:

这会占用处理器的所有时间,永远不会让给另一个线程吗?我相信一旦处理器进入临界区,它就不会被中断,直到它离开临界区,所以锁中的操作是原子的。

是否可以使用此技术来保证您的应用程序始终有一个核心可以运行,并且永远不会等待?

最佳答案

I believe once a processor is in a critical section it cannot be interrupted until it leaves the critical section, so that the operations in the lock are atomic

不,在操作系统级别,线程将被挂起,另一个线程(来自或不是来自另一个进程)将被执行。操作系统调度程序负责根据线程的状态和优先级将 CPU 时间分配给系统中执行的各个线程。

参见 MSDN (尤其是多任务处理和日程安排章节)。

此外,lock 并不意味着 atomic。这只是意味着没有其他线程可以同时运行同一段代码。

关于c# - 临界区可以无限期地停止处理器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114347/

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