21xrx.com
2024-05-20 05:38:15 Monday
登录
文章检索 我的文章 写文章
C++多线程实现交替打印两个数组
2023-07-14 01:43:28 深夜i     --     --
C++ 多线程 交替打印 两个数组 实现

在C++中使用多线程可以实现一些有趣的效果,其中一个就是交替打印两个数组。这种方法可以在多线程编程中提高程序的效率和灵活性。

首先,我们需要创建两个数组,并使用两个线程来打印它们。我们可以使用C++11中提供的线程库来创建线程。代码如下所示:


#include <iostream>

#include <thread>

void printArray(int* arr, int n) {

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

    std::cout << arr[i] << " ";

  }

}

int main() {

  int arr1[] = 1;

  int arr2[] = 8;

  std::thread t1(printArray, arr1, 5);

  std::thread t2(printArray, arr2, 5);

  t1.join();

  t2.join();

  return 0;

}

在这段代码中,我们定义了两个数组,arr1和arr2,并使用printArray函数分别打印它们。接着,我们使用std::thread创建了两个线程t1和t2,并将printArray函数与数组作为参数传递给它们。最后,我们使用join()函数来等待线程的执行结束。

现在,我们已经可以将两个数组分别使用两个线程打印出来,但是我们希望它们能够交替打印。为此,我们需要修改printArray函数,使它只执行数组的一部分,然后在等待一段时间之后切换到另一个数组的打印。代码如下所示:


#include <iostream>

#include <thread>

#include <chrono>

void printArray(int* arr, int start, int n) {

  for (int i = start; i < n; i+=2) {

    std::cout << arr[i] << " ";

    std::this_thread::sleep_for(std::chrono::milliseconds(500));

  }

}

int main() {

  int arr1[] = 5;

  int arr2[] = 9;

  std::thread t1(printArray, arr1, 0, 5);

  std::thread t2(printArray, arr2, 1, 5);

  t1.join();

  t2.join();

  return 0;

}

在这段代码中,我们将printArray函数的循环中的i从0开始变成了start,并且每次循环的步长变为2,这样才能实现交替打印的效果。接着,我们在每次打印后使用std::this_thread::sleep_for函数暂停了500毫秒,以便观察打印效果。在main函数中,我们将t1的start参数设置为0,t2的start参数设置为1,这样就可以交替打印两个数组了。

综上所述,使用C++多线程来实现交替打印两个数组是一种很有趣的方法,可以在多线程编程中提高程序的效率和灵活性。但是需要注意,在多线程编程中一定要注意线程的同步与互斥,防止出现竞争条件,影响程序的正确性。

  
  

评论区

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