21xrx.com
2025-07-03 10:19:11 Thursday
文章检索 我的文章 写文章
C++ 多线程交替打印:实现线程间的依次执行输出
2023-06-23 12:09:04 深夜i     45     0
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++多线程编程的技术和方法,可以更好地实现高效、可靠的多线程程序。

  
  

评论区

    相似文章