21xrx.com
2024-12-23 00:20:36 Monday
登录
文章检索 我的文章 写文章
使用C++编写程序实现两个线程交替打印输出结果
2023-06-27 21:52:07 深夜i     --     --
C++ 程序 两个线程 交替打印 输出结果

在C++中,我们可以使用线程库来创建并发执行的线程。线程库包含在头文件 中,并且线程对象可以使用std::thread类来创建。

我们可以编写一个程序,该程序创建两个线程并使它们交替打印输出结果。这是一个常见的任务,称为“交替输出”。

下面是一个示例程序,它使用C++编写并交替输出线程执行的结果:

#include

#include

#include

#include

using namespace std;

mutex mtx;

condition_variable cv;

bool ready = false;

int counter = 0;

void printOddNumbers()

{

  for (int i = 1; i <= 10; i+=2)

  {

    unique_lock lock(mtx);

    while (ready) cv.wait(lock);

    cout << i << endl;

    ready = true;

    cv.notify_all();

  }

}

void printEvenNumbers()

{

  for (int i = 2; i <= 10; i+=2)

  {

    unique_lock lock(mtx);

    while (!ready) cv.wait(lock);

    cout << i << endl;

    ready = false;

    cv.notify_all();

  }

}

int main()

{

  thread t1(printOddNumbers);

  thread t2(printEvenNumbers);

  t1.join();

  t2.join();

  return 0;

}

该程序定义了两个函数printOddNumbers()和printEvenNumbers(),代表两个线程分别要执行的任务。在主函数中,我们创建了两个线程,每个线程执行上述两个函数中的一个。

这两个函数中都有一个while循环,用于等待ready变量的状态。线程执行时,如果ready的值为false,则该线程会等待条件变量cv被通知才继续执行,否则该线程会打印输出结果并将ready的值设为true(或false),然后通知另一个线程。

通过使用互斥锁和条件变量,这个程序可以确保两个线程交替执行,而不会发生竞态条件或死锁。这是一个简单的多线程应用的例子,它可以帮助我们理解并发编程中的一些基本概念。

  
  

评论区

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