首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多核CPU和单核CPU的调度与同步

多核CPU和单核CPU的调度与同步
EN

Stack Overflow用户
提问于 2022-08-02 11:58:23
回答 1查看 52关注 0票数 0

根据我从这篇文章( https://stackoverflow.com/questions/16116952/can-multithreading-be-implemented-on-a-single-processor-system#:~:text=Yes%2C%20you%20can%20have%20multiple,one%20thing%20at%20a%20time.)的最高答案中所了解到的,

如果我只运行一个多线程程序,该程序在多核CPU中创建4个线程,则不需要调度,因为我的程序的所有4个线程都将在单个内核(或微处理器)中运行。但是可能需要同步,因为所有4个线程都访问存储在主内存中相同空间中的程序(或进程)的内存。

另一方面,在一个单一的核心CPU计算机。如果运行创建4个线程的相同程序,则需要同步和调度,因为所有线程都必须使用相同的Core (或微处理器)。

如果是错的,请纠正我的理解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-02 13:21:34

不需要调度,因为我的程序的所有4个线程都将在单个内核中运行。

但在实践中却并非如此。操作系统调度程序在这两种情况下都会运行。除非您将线程引脚到核心,否则线程可以从一个核心迁移到另一个核心。事实上,即使你把它们钉在一起,通常也很少有其他的线程可以在机器上准备好(例如。( ssh守护进程、tty会话、图形程序、内核线程等)所以操作系统必须安排他们。将有上下文开关,尽管数量将比单处理器低得多。

可能需要同步,因为所有4个线程都访问存储在主内存中相同空间中的程序(或进程)的内存。

这是真的。请注意,线程也可以在不同的内存区域上工作(因此,除了它们被连接时之外,不需要同步)。还请注意,“主内存”在这里包括CPU缓存。

在一台单核CPU计算机中。如果运行创建4个线程的相同程序,则需要同步和调度,因为所有线程都必须使用相同的Core (或微处理器)。

总的来说,是的。尽管如此,“日程安排”一词还不清楚。THere是多种调度方式:抢占合作调度。在这里,作为一个程序员,您不需要做任何特殊的事情,因为调度是由操作系统完成的。因此,说您“需要”调度是有点出乎意料的。操作系统将使用抢占(通过为同一核心上的每个线程分配不同的时间片)来调度同一核心上的线程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73207160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档