C++ Boost线程、Posix线程和STD线程,为什么它们提供不同的性能?

C++ Boost线程、Posix线程和STD线程,为什么它们提供不同的性能?,c++,multithreading,boost,posix,C++,Multithreading,Boost,Posix,据我所知, 在计算机科学中,执行线程是最小的执行序列 可由计算机独立管理的编程指令 调度程序,它通常是操作系统的一部分。这个 不同操作系统的线程和进程的实现不同 但在大多数情况下,线程是进程的一个组件。 一个进程中可以存在多个线程,它们可以并发执行 以及共享内存等资源,而不同的进程则不共享 分享这些资源。特别是,进程的线程共享 其可执行代码及其变量在任何给定时间的值。[] 当我决定在C++中编写多线程程序时,我面临着很多选择,如Boost线程、POSIX线程和STD线程。p> 在互联网上进行一次

据我所知,

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

当我决定在C++中编写多线程程序时,我面临着很多选择,如Boost线程、POSIX线程和STD线程。p> 在互联网上进行一次简单的搜索,就可以看到该网站所做的一项性能评估

我的问题更基本,也与性能相关

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


是什么让他们更快或更慢

Boost文档提到了光纤库,它实际上不是线程。创建库所称的光纤(本质上是用户空间线程或协同路由,有时也称为绿色线程)不会在内核端创建单独的可调度实体,因此在创建时效率会更高。其他方面的效率可能会降低,因为在这种模式下,I/O操作必然会变得更加复杂(因为如果其他光纤可以在其中工作,则执行I/O的光纤不应阻塞其运行的操作系统线程)


请注意,有些协同程序的实现远远超出了事实上的GNU/Linux ABI和其他类似POSIX的操作系统的概念限制,因此它们充其量也应该被视为丑陋的黑客行为。

编辑您的问题,以包含一个。并包含指向您的证据的链接。也许这些问题也提供了答案。