21xrx.com
2024-11-22 07:07:14 Friday
登录
文章检索 我的文章 写文章
如何在C++中创建多个线程
2023-07-06 21:44:18 深夜i     --     --
多线程 C++ 创建 并发 线程安全

在现代计算机系统中,多线程编程已成为一种越来越流行的编程模式。而C++语言提供了一种灵活的机制来创建多个线程。

C++中创建线程的方法非常简单,只需要包含头文件 ,然后使用 std::thread 类的构造函数来创建一个新的线程。例如:


#include <iostream>

#include <thread>

void my_function()

  // 线程代码

  std::cout << "Hello from my_function!" << std::endl;

int main()

{

  std::thread my_thread(my_function);

  // 等待线程结束

  my_thread.join();

  return 0;

}

在这个例子中,我们创建了一个名为 my_thread 的新线程,它运行 my_function() 函数。当线程结束时,我们需要调用 join() 函数来等待它的结束,避免出现竞态条件。

除了函数指针,C++还允许使用 Lambda 表达式来创建线程,如下所示:


#include <iostream>

#include <thread>

int main()

{

  std::thread my_thread([]()

    std::cout << "Hello from my_thread!" << std::endl;

  );

  my_thread.join();

  return 0;

}

除了创建单个线程,C++还允许我们创建多个线程。我们可以将线程对象存储在容器中,例如 std::vector,然后使用循环来创建多个线程。如下所示:


#include <iostream>

#include <thread>

#include <vector>

void my_function(int i)

  std::cout << "Hello from thread " << i << "!" << std::endl;

int main()

{

  std::vector<std::thread> threads;

  for (int i = 0; i < 5; ++i) {

    threads.push_back(std::thread(my_function, i));

  }

  // 等待所有线程结束

  for (auto& th : threads) {

    th.join();

  }

  return 0;

}

在这个例子中,我们使用循环创建了 5 个线程,每个线程调用 my_function() 函数并传入不同的参数。我们将每个线程对象存储在一个 std::vector 容器中,然后在循环中调用 join() 函数等待所有线程结束。

在C++中创建多个线程非常简单,只需要使用 std::thread 类的构造函数和 join() 函数即可。我们可以使用循环和容器来创建任意数量的线程,并使用Lambda表达式来编写轻量级的线程函数。多线程编程可以大大提高程序的性能和并发性,但也需要谨慎使用,以避免线程安全问题和竞态条件。

  
  

评论区

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