21xrx.com
2025-03-23 13:21:16 Sunday
文章检索 我的文章 写文章
C++多线程循环打印ABC十次
2023-06-23 11:55:05 深夜i     --     --
C++ 多线程 循环 打印 ABC

在C++编程中,多线程技术的应用越来越重要。本文将介绍如何使用C++多线程循环打印ABC十次。

首先,我们需要使用C++的头文件 。在头文件里,我们定义一个互斥量(mutex),这是为了保证在多线程同时进行的情况下,多个线程不会同时访问同一资源。为了进行打印,我们还需要定义一个输出锁,这样每个线程就可以依次输出指定的字符序列。

接下来,我们可以定义三个线程分别打印字母 A、B、C。 这里我们利用 for 循环控制每个线程的打印次数。每个线程执行完打印任务后,就会阻塞自己,等待其他线程完成后共同运行返回。

最后,我们开启三个线程并在主线程中等待它们结束后再结束程序。在这里,我们可以利用 std::thread 的 join() 方法来等待线程的结束。

下面是完整的代码:

#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
mutex mtx;
int i = 0;
void printA()
{
  for (; i < 30; )
  {
    mtx.lock();
    if (i % 3 == 0)
    {
      cout << "A";
      i++;
    }
    mtx.unlock();
  }
}
void printB()
{
  for (; i < 30; )
  {
    mtx.lock();
    if (i % 3 == 1)
    {
      cout << "B";
      i++;
    }
    mtx.unlock();
  }
}
void printC()
{
  for (; i < 30; )
  {
    mtx.lock();
    if (i % 3 == 2)
    {
      cout << "C";
      i++;
    }
    mtx.unlock();
  }
}
int main()
{
  thread th1(printA);
  thread th2(printB);
  thread th3(printC);
  th1.join();
  th2.join();
  th3.join();
  return 0;
}

上述代码中,我们定义了三个函数,分别依次打印 A、B、C 字符。在主函数中,我们通过创建三个线程实现多任务处理,每个线程利用 mutex 的 lock/unlock 方法同步进行打印操作,确保每个线程正确的按照顺序打印字符。最终,我们通过调用 thread 的 join() 方法来等待线程运行结束,使得程序正常退出。

总结起来,C++多线程技术的应用可以实现程序更高效地处理任务,同时在设计中需要注意对共享资源的处理,避免多个线程同时访问同一个资源导致的冲突。以上代码在这个问题的解决上做了一些基本的处理,要处理其他更加复杂的多线程问题,还需要大量的实践和解决问题经验。

  
  

评论区