gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 20:17:51 26 4
gpt4 key购买 nike

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

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

最佳答案

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

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

所以你被阻塞的执行线程只会阻塞:执行线程。 CPU 和 CPU 内核继续让其他执行线程进出它们,并且不会空闲。

关于multithreading - 等待 IO 的线程是否也会阻塞核心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35688553/

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