据我所知,
在计算机科学中,执行的线程是最小的序列 程序指令,可由a独立管理 调度程序,通常是操作系统的一部分。该 线程和进程的实现在操作之间有所不同 系统,但在大多数情况下,线程是进程的一个组件。 多个线程可以存在于一个进程中,并发执行 和共享资源,如内存,而不同的进程不 分享这些资源。特别是,进程的线程共享 它的可执行代码及其在任何给定时间的变量值。[1]
当我决定用c ++编写多线程程序时,我遇到了很多选择,比如boost thread,posix thread和std thread。
在互联网上进行简单搜索即可显示boost.org网站here的效果衡量标准。
我的问题也有点基础和性能相关。
基本上,为什么它们的性能不同?为什么,例如线程类型A,比其他线程更快?它是由大多数专业程序员编写的,由功能强大的操作系统运行,但它们提供不同的性能。
是什么让他们更快或更慢?
答案 0 :(得分:3)
Boost文档是指光纤库,它实际上不是线程。创建库所谓的光纤(本质上是用户空间线程或协同程序,有时也称为绿色线程)不会在内核端创建单独的可调度实体,因此在创建时它可以更高效。其他事情可能效率较低,因为在此模型下I / O操作必然会变得更加复杂(因为如果其他光纤可以在那里工作,那么执行I / O的光纤不应该阻止它运行的操作系统线程。)
请注意,其中一些协程实现远远超出了事实上的GNU / Linux ABI和其他类似POSIX的操作系统的概念限制,因此它们应被视为丑陋的黑客攻击。