holyya.com
2025-09-05 00:09:19 Friday
登录
文章检索 我的文章 写文章
C++ 线程的 join() 方法
2023-07-02 12:53:35 深夜i     --     --
C++ join() 线程

C++ 线程是一种能够同时运行多个任务的特殊类型的函数。线程是并发执行的,因此具有多任务处理的优点。但是,在线程结束后,我们需要确保它已完全完成。在这种情况下,我们需要使用 C++ 线程的 join() 方法。

线程的 join() 方法是一个非常有用的函数,它可以等待线程结束并阻塞主线程。当使用 join() 方法时,主线程将等待子线程完成执行,然后再继续执行。

下面是线程的 join() 方法的一些实例:

1. 在主线程中创建一个子线程,并在子线程执行结束后,主线程继续执行:


#include <iostream>

#include <thread>

void print_numbers(int start, int end) {

  for (int i = start; i <= end; i++)

    std::cout << i << std::endl;

  

}

int main() {

  std::thread t1(print_numbers, 1, 10);

  t1.join();

  std::cout << "Main Thread";

  return 0;

}

在这个例子中,我们创建了一个名为 t1 的线程,它将执行 print_numbers() 函数。我们使用 join() 方法来等待线程执行完毕,然后在主线程中执行下一个语句。

2. 当有多个线程时,join() 方法可以用于按照某个顺序等待它们结束:


#include <iostream>

#include <thread>

void worker(int id) {

  std::cout << "Worker " << id << " started." << std::endl;

  // 模拟线程工作

  std::this_thread::sleep_for(std::chrono::seconds(1));

  std::cout << "Worker " << id << " finished." << std::endl;

}

int main() {

  std::thread t1(worker, 1);

  std::thread t2(worker, 2);

  std::thread t3(worker, 3);

  t1.join();

  t2.join();

  t3.join();

  std::cout << "Main Thread finished." << std::endl;

  return 0;

}

在这个例子中,我们创建了三个 worker() 函数的线程,并通过 join() 方法按照顺序等待它们完成。我们使用 std::this_thread::sleep_for() 函数来模拟线程的工作。最后,我们在主线程中输出该程序的完成消息。

总体而言,C++ 线程的 join() 方法是在多线程编程中非常实用的一种技术。它可以确保线程正确完成,使主线程能够按照所需顺序执行。

  
  

评论区

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