gpt4 book ai didi

c++ - 当线程/进程处于 sleep 状态时, sleep 线程或进程的指令是否继续执行?

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:55 30 4
gpt4 key购买 nike

当我在 IPC(进程间通信)上做作业时,一个在两个进程之间使用共享内存的聊天应用程序, sleep 线程如何检查 while 循环中的条件(如果 *shm != 1 线程打印字符串唤醒)这怎么可能?

#define TRUE 1

while(*shm == 1)
sleep(1)
printf("wakeup");

最佳答案

sleep 不检查 shm 值。

现在你的线程调用sleep,它会暂停线程几毫秒,然后它会被来自操作系统定时器/调度器的信号唤醒。这就是 sleep 所做的全部。然后线程唤醒并恢复您的代码:sleep() 返回,循环开始下一次迭代,检查 shm 并决定是再次休眠还是继续。

它可以工作,但如果您使用专门的同步原语(如 c++11/posix 中的条件变量),它会消耗更多。在等待条件变量信号时休眠将真正休眠直到接收到信号,而不会为这种周期性唤醒浪费 cpu 周期。

关于c++ - 当线程/进程处于 sleep 状态时, sleep 线程或进程的指令是否继续执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50186590/

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