21xrx.com
2024-12-22 21:36:38 Sunday
登录
文章检索 我的文章 写文章
C++11多线程编程
2023-07-04 08:05:08 深夜i     --     --
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多线程编程来实现。

  
  

评论区

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