21xrx.com
2024-09-20 00:16:45 Friday
登录
文章检索 我的文章 写文章
用C++多线程技术实现累加功能
2023-06-23 14:32:50 深夜i     --     --
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++多线程技术实现累加功能可以提高程序的效率,但也会增加程序的复杂性,需要注意线程安全。同时,多线程也可能带来额外的开销,需要按需选择。

  
  

评论区

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