阻止,暂停和睡眠之间有什么区别

时间:2018-05-04 08:57:07

标签: multithreading process sleep blocking suspend

例如,进程正在使用块模式侦听某个端口,因此如果I / O未就绪,则该进程将被阻止。

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

我们也知道我们可以让一个过程睡眠:sleep(1000)

我的问题是:如果这样的进程被阻止,我可以说该进程被暂停了吗?该过程是否会从CPU换出?关于sleep的相同问题。

1 个答案:

答案 0 :(得分:3)

“休眠” - 通常表示该线程处于显式sleep(...)调用中。

“暂停” - 有时以通用方式使用,这意味着线程正在等待...某事。其他时候,“Suspended”意味着某些其他线程或进程显式暂停它(例如,用于调试目的),并且进程/线程将无法再次运行,直到它被明确恢复。 / p>

“被阻止” - 是三者中最通用的。通常它只是意味着进程/线程正在等待某事。有时它意味着线程/进程正在等待的是I / O操作。