21xrx.com
2025-04-03 21:02:20 Thursday
文章检索 我的文章 写文章
C++多线程编程
2023-07-02 22:01:13 深夜i     11     0
C++ 多线程 编程 并发 线程安全

C++多线程编程是现代计算机科学中的一个重要主题。多线程编程允许程序同时执行多个任务,从而获得更好的性能和响应性,特别是在多核 CPU 平台上。

在 C++ 中,多线程编程可通过标准库中的 头文件进行实现。该头文件提供了一个用于启动新线程的 std::thread 类和一些相关的函数。以下是一个简单的 C++ 程序示例,它创建一个线程来输出一段文本:

#include <iostream>
#include <thread>
using namespace std;
void worker()
  cout << "Hello from worker thread!" << endl;
int main() {
  thread t(worker);
  t.join();
  cout << "Back to main thread." << endl;
  return 0;
}

上面的程序中,worker 函数用于线程执行的实际工作,并在该线程中输出一条消息。在主函数中,使用 std::thread 类创建了一个新线程并传递 worker 函数作为其执行体,然后调用 t.join() 等待该线程执行完成后再继续执行主线程。

在多线程编程中,重要的问题之一是如何保证数据同步和线程安全。C++ 标准库提供了一些同步原语,如 mutex、condition_variable、atomic 等,用于实现多线程之间的同步和互斥。下面的代码演示了如何使用 mutex 来保护共享的数据结构:

#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
mutex mtx;
int count = 0;
void worker() {
  for (int i = 0; i < 1000000; i++) {
    mtx.lock();
    count++;
    mtx.unlock();
  }
}
int main() {
  thread t1(worker);
  thread t2(worker);
  t1.join();
  t2.join();
  cout << "Count = " << count << endl;
  return 0;
}

在这个程序中,两个线程分别对全局变量 count 做递增操作,每次执行时需要先获得互斥锁然后再释放锁。这样可以确保在任何时刻只有一个线程在修改 count 变量,从而避免不必要的竞争和并发错误。

总结起来,C++ 多线程编程是一个复杂而强大的主题,可以大大提高计算机程序的性能和可扩展性。通过适当地使用 std::thread 类和同步原语,可以实现安全、高效的多线程应用程序。

  
  

评论区