等待IO的线程是否也会阻塞核心?

Jam*_*ieP 14 multithreading asynchronous cpu-architecture synchronous blocking

在计算的同步/阻塞模型中,我们通常说执行线程在等待IO任务完成时将等待(被阻塞).

我的问题是,这通常会导致CPU核心执行线程空闲,还是等待IO的线程通常会被上下文切换出来并进入等待状态,直到IO准备好被处理?

e0k*_*e0k 21

CPU内核通常不专用于一个特定的执行线程.内核不断地切换进出CPU的进程.CPU当前正在执行的进程处于"运行"状态.等待轮到他们的进程列表处于"就绪"状态.内核可以非常快速地切换这些内容.现代CPU功能(多核,同时多线程等)尝试增加可以一次物理执行的执行线程数.

如果进程被I/O阻塞,内核将把它放在一边(将其置于"等待"状态),甚至不考虑在CPU中给它一些时间.当I/O完成时,内核将阻塞的进程从"等待"状态移动到"就绪"状态,以便它可以在CPU中轮到它("运行").

所以你被阻止的执行线程只阻止:执行的线程.CPU和CPU内核继续将其他执行线程切换进出,并且不会空闲.