21xrx.com
2024-11-05 18:41:01 Tuesday
登录
文章检索 我的文章 写文章
实现C++多线程交替打印两个数组
2023-07-03 16:25:07 深夜i     --     --
C++ 多线程 交替打印 数组

随着计算机处理能力的提升和多核CPU的普及,多线程编程越来越成为程序员必备技能之一。而如何实现多线程交替打印两个数组是多线程编程的基础内容之一。

在C++中,实现多线程可以使用线程库。以Windows系统为例,C++11中封装了线程类,通过include “ ”头文件即可使用。具体实现方法如下:


#include <thread>

#include <iostream>

using namespace std;

int num1[5] = 1;

int num2[5] = 9;

bool flag1 = true;

void print(int* nums, int length)

{

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

  {

    while (flag1); // 如果flag1为true,等待

    cout << nums[i] << " ";

    flag1 = true; // 修改flag1状态

  }

}

int main()

{

  // 创建两个子线程print1和print2

  thread print1(print, num1, 5);

  thread print2(print, num2, 5);

  print1.join(); // 等待子线程结束

  print2.join();

  return 0;

}

上述代码中,首先定义了两个数组num1和num2,每个数组都有5个元素。接着定义了一个布尔变量flag1,用来控制两个线程的交替执行。如果flag1为true,则线程1打印,线程2等待;如果flag1为false,则线程2打印,线程1等待。

接下来定义了一个print函数,用来打印数组元素。在函数内部,通过while循环等待flag1状态,如果为true则继续执行,否则等待。接着打印数组元素,并将flag1状态修改为false,以便另一个线程执行。

在主函数中,首先创建两个子线程print1和print2,分别传入num1和num2数组以及数组长度5。然后通过join函数等待子线程结束。

通过上述代码,我们成功实现了C++多线程交替打印两个数组的功能。当然,代码还可以进行进一步的优化,在多线程编程中尽可能减少竞态条件的出现并提高程序的效率是我们需要不断追求的目标。

  
  

评论区

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