21xrx.com
2024-12-27 19:12:20 Friday
登录
文章检索 我的文章 写文章
C++ 多线程交替打印:实现线程间的依次执行输出
2023-06-23 12:09:04 深夜i     --     --
C++ 多线程 交替打印 实现 线程间依次执行 输出

C++是一种高级程序设计语言,支持多线程编程,在多线程编程中,如果需要实现多个线程间的依次执行输出,则可以使用一些技巧和方法。

实现多线程间的依次执行输出,可以使用信号量、互斥锁、条件变量等技术。其中,互斥锁是最常用的技术之一,它可以保证同一时间只有一个线程可以访问共享资源,避免了多个线程同时修改共享资源的情况。

下面,我们来看一下如何使用互斥锁实现多线程间的依次执行输出。假设有两个线程,线程A和线程B,需要交替打印输出一些信息,那么我们可以定义一个全局的互斥锁对象,并使用互斥锁来控制线程的输出顺序。代码下面:


#include <iostream>

#include <thread>

#include <mutex>

using namespace std;

mutex mtx;

void printA()

{

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

  {

    mtx.lock();

    cout << "Thread A : " << i << endl;

    mtx.unlock();

  }

}

void printB()

{

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

  {

    mtx.lock();

    cout << "Thread B : " << i << endl;

    mtx.unlock();

  }

}

int main()

{

  thread thA(printA);

  thread thB(printB);

  thA.join();

  thB.join();

  return 0;

}

上面的代码中,我们定义了一个全局的互斥锁对象mtx,然后在线程A和线程B中分别对mtx加锁和解锁,保证了两个线程的输出顺序交替进行。

运行上述程序,输出如下:


Thread A : 0

Thread B : 0

Thread A : 1

Thread B : 1

Thread A : 2

Thread B : 2

Thread A : 3

Thread B : 3

Thread A : 4

Thread B : 4

Thread A : 5

Thread B : 5

Thread A : 6

Thread B : 6

Thread A : 7

Thread B : 7

Thread A : 8

Thread B : 8

Thread A : 9

Thread B : 9

从输出结果可以看出,线程A和线程B的输出顺序交替进行,实现了多线程间的依次执行输出。

总之,在C++多线程编程中,实现线程间的依次执行输出,可以采用多种技术和方法,其中互斥锁是最常用的一种技术。通过学习和掌握C++多线程编程的技术和方法,可以更好地实现高效、可靠的多线程程序。

  
  

评论区

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