c++ - 计算机如何将操作从一个线程切换到另一个线程

标签 c++ multithreading

我是多线程编程的新手。经过对功能的一些研究,例如join、sleep、joinable,我仍然很困惑计算机如何决定何时将操作从一个线程切换到另一个线程?假设您有一个具有多个线程的核心,每个线程中都有一个无限循环(例如 while(true)),暂时忘记互斥锁。如果while循环一直开着,电脑怎么切换?

这是 sleep_for 函数的用武之地吗?

最佳答案

操作系统开始运行一个线程之前,它会安排硬件在线程的时间片结束时中断它。如果没有其他事情发生并且线程确实用完了它的完整时间片,则此中断将触发操作系统切换线程。

关于c++ - 计算机如何将操作从一个线程切换到另一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32214627/

相关文章:

c++ - 我的循环不想结束

java - 为什么ConcurrentHashMap中的HashEntry是final的?

c# - 如何在不完全阻塞线程的情况下将线程池中的线程暂停执行一定时间?

java - 对于同时增长的列表上的每个循环

java - ConcurrentLinkedDeque 与 LinkedBlockingDeque

java - 在 java 的同步方法或 block 中使用时的静态成员

c++ - 包含 unique_ptr 的结构中的默认析构函数在使用 std::map 时导致编译错误

c++ - 是否可以编译在所有 Linux 发行版中执行的 C/C++ 源代码而无需重新编译?

线程函数内的c++函数

c++ - 多重声明与未定义