sor*_*h-r 3 c++ multithreading c++11
我想更多地了解c ++ 11多线程模型.谷歌搜索我可以找到很多例子,演示等等,但有些事情对我来说并不明显.
我们研究了大学操作系统课程中的线程概念.当然,这与特定的实现或语言无关.以下文章来自Abraham Silberschatz,Greg Gagne和Peter Baer Galvin,"操作系统概念,第八版",第4章:
4.2多线程模型
在现代系统中有两种类型的线程需要管理:用户线程和内核线程.内核上支持用户线程,没有内核支持.这些是应用程序员将在其程序中添加的线程.
操作系统本身的内核支持内核线程.所有现代操作系统都支持内核级线程,允许内核
- 执行多个同时执行的任务和/或为多个内核提供服务
- 系统同时调用.
在特定实现中,必须使用以下策略之一将用户线程映射到内核线程:
4.2.1多对一模型
4.2.2一对一模型
4.2.3多对多模型
那么c ++ 11支持哪些模型?AFAIK c++不应该用于特定种类的操作系统.所以标准库应该只支持用户空间线程,对吗?
jpa*_*cek 10
关于您询问的问题(即用户级或内核级线程及其实现),C++ 11标准没有指定任何内容.因此,任何遵循标准规则的实现(可能是您提到的任何规则 - 规则都不涉及线程模型的实现细节).当然,如果你编写一个用户空间程序,它自然会跟随C++ 11线程将是用户空间线程.但是标准对"用户空间"或"内核空间"一无所知,所以如果你选择在C++ 11中实现一个操作系统内核,那么线程将(自然就像上面那样)内核线程.
在某种意义上,C++ 11标准不支持那些线程模型(例如,没有API来获取线程并指定"这必须是内核线程,或者单独的lwp或其他东西").在另一个方面,它支持所有这些(例如,构建在任何用户内核线程映射概念上的线程库可以提供C++ 11线程).
| 归档时间: |
|
| 查看次数: |
1153 次 |
| 最近记录: |