21xrx.com
2025-03-14 00:14:18 Friday
登录
文章检索 我的文章 写文章
C++ 如何创建子线程?
2023-07-01 11:56:05 深夜i     --     --
C++ 子线程 创建 线程池 多线程编程

C++是一门非常强大的编程语言,它可以实现多线程编程。创建子线程是实现并发编程的基础。在C++中,我们可以使用多个库来实现线程编程。其中最常用的是C++11标准库提供的thread库。

首先,我们需要包含头文件 。创建线程实例时需要使用线程类std::thread。创建线程实例后,需要将线程实例作为参数传递给函数。这个函数将作为新线程执行的函数。函数参数可以是函数指针、函数对象或lambda表达式。


#include <iostream>

#include <thread>

using namespace std;

void print(int n) {

  for (int i = 0; i < n; i++)

    cout << "Printing from new thread " << i << endl;

  

}

int main() {

  cout << "Main thread started" << endl;

  thread t(print, 5);

  t.join();

  cout << "Main thread terminated" << endl;

  return 0;

}

在上面的代码中,我们通过std::thread类创建一个新线程并传递给print函数。print函数输出了“Printing from new thread”“n”次。在main函数中我们调用新线程的join()方法。join()方法会阻塞主线程,直到新线程执行完成。在新线程执行完成后,控制权将返回主线程。

除了join()方法,std::thread类还提供了其他一些方法。detach()方法可以让新线程在后台运行,不阻塞主线程。get_id()方法可以返回线程的id。对于多个子线程,get_id()可以用于区分线程。joinable()方法可以检测线程是否可以加入/分离。如果线程可以加入/分离,返回true。如果线程已经被加入或分离,则返回false。

总结一下,C++提供了线程编程的基础库。使用std :: thread类可以创建子线程并在主线程中处理其他任务。join(), detach(), get_id()和joinable()等方法可以帮助我们更好地管理线程。熟悉这些方法和库将使您能够轻松创建高效并发程序。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复