C++是否提供内置的多线程支持

Does C++ provide built in multi threading support?

本文关键字:多线程 支持 内置 是否 C++      更新时间:2023-10-16

我想建立一个像每日警报这样的项目。我想用 c++ 来做这件事。为此,我需要多线程。C++是否提供像java线程类这样的内置多线程支持?或者有没有其他可靠的方法可以做到这一点?

在 c++11 中使用线程非常简单,首先包含线程标头,然后将要运行的函子传递到线程构造函数中。

完成后请务必加入线程,否则它是 UB。

#include <thread>
int main() {
  std::thread work([]() { std::cout << "Hi from a thread!" << std::endl; });
  work.join();
}
线程

不可复制,但它们是可移动的,因此您可以从函数调用中返回线程。

Werner 的帖子链接到所有C++的终极网站 - cppreference.com,线程支持库与 future 和 async 一起被描述 - 这两个强大的概念可能有助于更自然地实现您的多线程代码。

一些想法:

  • 如果在 c++11 上:标准库中存在线程:http://en.cppreference.com/w/cpp/thread
  • boost 还提供了一些线程(独立于 C++11): http://www.boost.org/doc/libs/1_55_0/doc/html/thread.html
  • 您可能需要检查特定于操作系统的库,例如 unix/linux 通常具有可用的 pthread (http://en.wikipedia.org/wiki/POSIX_Threads)
  • 有提供独立于操作系统的抽象的通信库,例如 ACE:http://www.cs.wustl.edu/~schmidt/ACE.html

C++11开始,C++具有多线程支持的类。您可能最感兴趣的课程是 std::thread 。还有用于同步的类,例如 std::mutex .您可以在此处查看课程的概述:http://en.cppreference.com/w/cpp/thread。

在C ++ 11中,是的。包括线程标头,然后开始构建多线程应用程序一本值得一读的书,是C++并发在行动吗它将教你如何处理竞争条件的问题,如何使线程安全的容器,以及非常重要的,如何创建你的线程池类