21xrx.com
2024-12-23 00:36:18 Monday
登录
文章检索 我的文章 写文章
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++多线程技术的应用可以实现程序更高效地处理任务,同时在设计中需要注意对共享资源的处理,避免多个线程同时访问同一个资源导致的冲突。以上代码在这个问题的解决上做了一些基本的处理,要处理其他更加复杂的多线程问题,还需要大量的实践和解决问题经验。

  
  

评论区

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