Yve*_*ves 2 multithreading sleep process suspend blocking
例如,一个进程正在以阻塞模式侦听某个端口,因此如果 I/O 未准备好,该进程将被阻塞。
while (true)
{
msg = recv(port, BLOCKING_FLAG); // blocks here
cout<<msg<<endl;
}
Run Code Online (Sandbox Code Playgroud)
我们也知道我们可以让一个进程休眠: sleep(1000)
。
我的问题是:如果这样的进程是阻塞的,我可以说该进程被挂起吗?该进程是否会从 CPU 中换出?相同的问题sleep
。
“休眠”——通常意味着线程处于显式sleep(...)
调用中。
“暂停”——有时以通用方式使用,意味着线程正在等待......某事。其他时候,“挂起”意味着某个其他线程或进程显式挂起它(例如,出于调试目的),并且该进程/线程在显式恢复之前将无法再次运行。
“阻止”——是三者中最通用的。通常它仅仅意味着进程/线程正在等待某些东西。有时这意味着线程/进程正在等待的是 I/O 操作。