21xrx.com
2025-03-21 16:57:12 Friday
文章检索 我的文章 写文章
C++11多线程编程
2023-07-04 08:05:08 深夜i     19     0
C++11 多线程 编程 并发

C++11是一种新的编程语言标准,它引入了许多新的语言特性和库函数,其中包括多线程编程。C++11的多线程编程提供了一种简单、灵活、高效的并发编程机制,它对于处理并发任务和提高程序性能具有重要作用。

C++11中的多线程编程主要通过两个库函数来实现:std::thread和std::mutex。其中,std::thread是创建和管理线程的主要函数,可以使用它来创建新的线程和等待线程的完成。std::mutex则提供了锁机制,可以用来保护共享资源,防止线程之间的竞争。

例如,下面的代码片段就展示了如何使用std::thread和std::mutex来创建线程和保护共享资源。

#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
mutex m; //定义一个全局mutex
void increment(int& counter){
  for(int i = 0; i < 10000; i++){
    m.lock();
    counter++;
    m.unlock();
  }
}
int main(){
  int counter = 0;
  thread t1(increment, ref(counter));
  thread t2(increment, ref(counter));
  t1.join();
  t2.join();
  cout << "counter = " << counter << endl;
  return 0;
}

在上述代码中,我们定义了一个全局的mutex对象m。在increment函数中,我们使用lock和unlock来锁住和解锁共享变量counter。然后在main函数中,我们使用std::thread来创建两个线程同时调用increment函数来执行累加操作。最后输出counter的值以确保线程安全。

除此之外,C++11还提供了一些辅助多线程编程的函数,如std::atomic和std::condition_variable等。std::atomic可以用来保证在多线程情况下的原子性操作,而std::condition_variable则提供了线程间的通信机制,可以用于等待外部事件的发生。

总之,C++11的多线程编程为我们提供了更加便捷、高效的并发编程机制。当我们需要提高程序性能和处理并发任务时,可以考虑运用C++11多线程编程来实现。

  
  

评论区