21xrx.com
2024-09-19 10:08:48 Thursday
登录
文章检索 我的文章 写文章
C++多线程编程
2023-07-02 22:01:13 深夜i     --     --
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 类和同步原语,可以实现安全、高效的多线程应用程序。

  
  

评论区

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