21xrx.com
2025-04-09 21:11:09 Wednesday
文章检索 我的文章 写文章
用C++多线程技术实现累加功能
2023-06-23 14:32:50 深夜i     21     0
C++ 多线程 累加 并发 互斥锁

C++多线程技术是现代编程的重要一环,它可以在同一程序或不同程序中同时运行多个线程,从而提高程序的性能和效率。在本文中,我们将介绍如何使用C++多线程技术实现累加功能。

首先,我们需要定义一个累加函数,接受一个整型参数n,并从1开始累加到n,返回累加结果。

int sum(int n)
{
  int result = 0;
  for (int i = 1; i <= n; i++)
  {
    result += i;
  }
  return result;
}

接下来,我们需要用多线程技术来提高累加效率。在C++11及以上版本中,我们可以使用std::thread来创建线程。在这个例子中,我们将创建两个线程,每个线程负责累加n的一半。我们把累加的结果保存到全局变量result中,通过使用互斥锁std::mutex来保证线程安全。

#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
int result = 0;
mutex mtx;
void sum_half(int n)
{
  int half = n / 2;
  int temp = sum(half);
  mtx.lock();
  result += temp;
  mtx.unlock();
}
int main()
{
  int n = 100;
  thread t1(sum_half, n);
  thread t2(sum_half, n);
  t1.join();
  t2.join();
  cout << "sum of " << n << " is " << result << endl;
  return 0;
}

在这个例子中,我们首先定义了一个全局变量result和一个互斥锁mtx,然后我们创建了两个线程t1和t2,每个线程负责累加n的一半。线程执行完毕后,我们输出全局变量result的值。

使用C++多线程技术实现累加功能可以提高程序的效率,但也会增加程序的复杂性,需要注意线程安全。同时,多线程也可能带来额外的开销,需要按需选择。

  
  

评论区

请求出错了