21xrx.com
2024-12-27 05:24:48 Friday
登录
文章检索 我的文章 写文章
C++11多线程编程
2023-07-04 14:50:42 深夜i     --     --
C++11 多线程 编程 并发 同步

C++11是指在C++标准中增加的一些新特性,其中包括了多线程编程。多线程编程是一种并行计算模式,它利用计算机拥有多个CPU核心的能力,在同一时间内运行多个线程以提高计算机的效率。

在C++11中,多线程编程变得更加容易和直观。使用新的多线程特性,需要使用 头文件和std::thread类。std::thread类表示在操作系统上创建的线程。

下面是一个简单的多线程示例:


#include <iostream>

#include <thread>

void worker_function()

  std::cout << "This is a worker thread!" << std::endl;

int main() {

  std::thread worker(worker_function); // 创建一个工作线程

  std::cout << "This is the main thread!" << std::endl;

  worker.join(); // 等待工作线程结束

  return 0;

}

在上面的示例中,我们创建了一个工作线程,用于执行worker_function()函数。主线程打印出一条消息,然后等待工作线程结束。

C++11还提供了一些与线程相关的工具,例如mutex、condition variable和atomic。这些工具可以帮助我们在多个线程之间同步数据,并且避免数据竞争和死锁等问题。

下面是一个使用mutex的示例:


#include <iostream>

#include <thread>

#include <mutex>

std::mutex cout_mutex;

void worker_function() {

  cout_mutex.lock();

  std::cout << "This is a worker thread!" << std::endl;

  cout_mutex.unlock();

}

int main() {

  std::thread worker(worker_function);

  cout_mutex.lock();

  std::cout << "This is the main thread!" << std::endl;

  cout_mutex.unlock();

  worker.join();

  return 0;

}

在上面的示例中,我们使用mutex,避免了在两个线程中同时输出到标准输出流的问题。

总的来说,C++11多线程编程为我们提供了一个方便而直观的方式来实现并行计算。使用多线程需要切记考虑同步和互斥问题,避免死锁和数据竞争等问题的发生。

  
  

评论区

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