我正在阅读有关线程和进程之间的差异的信息,并且几乎在网上到处都是,通常写有一个差异而没有太多解释:
如果一个进程被阻塞,剩余的进程可以继续执行。如果一个用户级线程被阻塞,它的所有对等线程也会被阻塞。
这对我来说没有任何意义。如果调度程序无法在阻塞线程和就绪/可运行线程之间切换,那么并发的意义是什么?给出的原因是,由于操作系统不区分给定父进程的各种线程,它会立即阻止所有线程。
我觉得这很不令人信服,因为所有现代操作系统都有带有线程 ID 的线程控制块,即使它仅在父进程的内存空间内有效。就像 Galvin 的操作系统书中给出的示例一样,如果拼写检查线程无法连接到某些在线词典,我不希望处理我的输入的线程被阻塞。
要么我对这个概念的理解有误,要么所有这些网站多年来都只是复制了一些旧线程差异。此外,我无法在诸如 Galvin 的书籍或 William Stalling 的 COA 书中讨论过线程的书中找到此声明。
这些是我找到陈述的资源: