gpt4 book ai didi

multithreading - 阻塞、挂起和 sleep 之间有什么区别

转载 作者:行者123 更新时间:2023-12-03 13:16:58 24 4
gpt4 key购买 nike

例如,一个进程正在以阻塞模式监听某个端口,那么如果I/O没有准备好,进程就会被阻塞。

while (true)
{
msg = recv(port, BLOCKING_FLAG); // blocks here
cout<<msg<<endl;
}

我们也知道我们可以让进程休眠:sleep(1000)

我的问题是:如果这样一个进程阻塞了,我能说这个进程被挂起了吗?该进程是否会从 CPU 换出?关于 sleep 的相同问题。

最佳答案

“ sleep ”——通常意味着线程处于显式 sleep(...) 调用中。

“暂停”——有时以通用方式使用,表示线程正在等待……某事。其他时候,“暂停”意味着其他一些线程或进程显式暂停了它(例如,出于调试目的),并且进程/线程将无法再次运行,直到它被显式恢复。

“阻塞”——是三个中最通用的。通常它仅仅意味着进程/线程正在等待某事。有时它暗示线程/进程正在等待的是 I/O 操作。

关于multithreading - 阻塞、挂起和 sleep 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50171038/

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