首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++11的多线程模型

C++11的多线程模型
EN

Stack Overflow用户
提问于 2012-07-07 20:47:20
回答 1查看 1.3K关注 0票数 3

我想了解更多关于c++11多线程模型的信息。在谷歌上搜索我可以找到很多例子,演示等等,但有些东西对我来说并不明显。

我们研究了大学操作系统课程中的线程概念。当然,这与具体的实现或语言无关。以下段落来自亚伯拉罕·西尔伯沙茨、格雷格·加涅和彼得·贝尔·加尔文,“操作系统概念,第八版",第四章:

4.2多线程模型 在现代系统中有两种类型的线程要管理:用户线程和内核线程。用户线程支持在内核之上,没有内核支持。应用程序程序员会将这些线程放入他们的程序中。 操作系统本身的内核中支持内核线程。所有现代OSes支持内核级线程,允许内核

  • 执行多个同时执行的任务和/或服务多个内核
  • 系统同时调用。

在特定的实现中,必须使用以下策略之一将用户线程映射到内核线程:

4.2.1多对一模式

4.2.2一对一模式

4.2.3多对多模型

那么c++11支持哪一个模型呢?AFAIK c++不应该用于特定种类的开放源码软件。所以标准库应该只支持用户空间线程,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-07 20:53:47

关于您询问的问题(即用户级或内核级线程及其实现),C++11标准没有指定任何内容。因此,任何遵循标准规则的实现(这可能是您提到的任何实现--这些规则与线程模型的实现细节无关)。当然,如果您编写一个用户空间程序,它自然会遵循C++11线程将是用户空间线程。但是标准对"userspace“或"kernelspace”一无所知,所以如果您选择在C++11中实现OS内核,那么线程将是(自然地,如前所述)内核线程。

在某种意义上,C++11标准不支持这些线程模型(例如。没有API来获取一个线程并指定“这必须是一个内核线程,或者一个单独的lwp或其他东西”)。在另一种情况下,它支持所有的人(例如。构建在任何用户内核线程映射概念之上的线程库可以提供C++11线程)。

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

https://stackoverflow.com/questions/11378498

复制
相关文章

相似问题

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