我想了解更多关于c++11多线程模型的信息。在谷歌上搜索我可以找到很多例子,演示等等,但有些东西对我来说并不明显。
我们研究了大学操作系统课程中的线程概念。当然,这与具体的实现或语言无关。以下段落来自亚伯拉罕·西尔伯沙茨、格雷格·加涅和彼得·贝尔·加尔文,“操作系统概念,第八版",第四章:
4.2多线程模型 在现代系统中有两种类型的线程要管理:用户线程和内核线程。用户线程支持在内核之上,没有内核支持。应用程序程序员会将这些线程放入他们的程序中。 操作系统本身的内核中支持内核线程。所有现代OSes支持内核级线程,允许内核
在特定的实现中,必须使用以下策略之一将用户线程映射到内核线程:
4.2.1多对一模式
4.2.2一对一模式
4.2.3多对多模型
那么c++11支持哪一个模型呢?AFAIK c++不应该用于特定种类的开放源码软件。所以标准库应该只支持用户空间线程,对吗?
发布于 2012-07-07 20:53:47
关于您询问的问题(即用户级或内核级线程及其实现),C++11标准没有指定任何内容。因此,任何遵循标准规则的实现(这可能是您提到的任何实现--这些规则与线程模型的实现细节无关)。当然,如果您编写一个用户空间程序,它自然会遵循C++11线程将是用户空间线程。但是标准对"userspace“或"kernelspace”一无所知,所以如果您选择在C++11中实现OS内核,那么线程将是(自然地,如前所述)内核线程。
在某种意义上,C++11标准不支持这些线程模型(例如。没有API来获取一个线程并指定“这必须是一个内核线程,或者一个单独的lwp或其他东西”)。在另一种情况下,它支持所有的人(例如。构建在任何用户内核线程映射概念之上的线程库可以提供C++11线程)。
https://stackoverflow.com/questions/11378498
复制相似问题