提升线程,Posix线程和STD线程,为什么它们提供不同的性能?

时间:2018-04-29 07:38:36

标签: c++ multithreading boost posix

据我所知,

  

在计算机科学中,执行的线程是最小的序列   程序指令,可由a独立管理   调度程序,通常是操作系统的一部分。该   线程和进程的实现在操作之间有所不同   系统,但在大多数情况下,线程是进程的一个组件。   多个线程可以存在于一个进程中,并发执行   和共享资源,如内存,而不同的进程不   分享这些资源。特别是,进程的线程共享   它的可执行代码及其在任何给定时间的变量值。[1]

当我决定用c ++编写多线程程序时,我遇到了很多选择,比如boost thread,posix thread和std thread。

在互联网上进行简单搜索即可显示boost.org网站here的效果衡量标准。

我的问题也有点基础和性能相关。

基本上,为什么它们的性能不同?为什么,例如线程类型A,比其他线程更快?它是由大多数专业程序员编写的,由功能强大的操作系统运行,但它们提供不同的性能。

是什么让他们更快或更慢?

1 个答案:

答案 0 :(得分:3)

Boost文档是指光纤库,它实际上不是线程。创建库所谓的光纤(本质上是用户空间线程或协同程序,有时也称为绿色线程)不会在内核端创建单独的可调度实体,因此在创建时它可以更高效。其他事情可能效率较低,因为在此模型下I / O操作必然会变得更加复杂(因为如果其他光纤可以在那里工作,那么执行I / O的光纤不应该阻止它运行的操作系统线程。)

请注意,其中一些协程实现远远超出了事实上的GNU / Linux ABI和其他类似POSIX的操作系统的概念限制,因此它们应被视为丑陋的黑客攻击。