C++11 引入了对线程编程的全面支持,使得多线程编程变得更加简单和高效。以下是一些关于 C++11 线程编程的基本概念和最佳实践。

基本概念

  • std::thread:用于创建和管理线程。
  • std::mutex:用于保护共享资源,防止数据竞争。
  • std::condition_variable:用于线程间的同步。

创建线程

#include <thread>

void threadFunction() {
    // 线程执行的代码
}

int main() {
    std::thread t(threadFunction);
    t.join(); // 等待线程结束
    return 0;
}

线程同步

为了确保线程安全,我们需要使用互斥锁(mutex)来同步对共享资源的访问。

#include <mutex>

std::mutex mtx;

void sharedResourceAccess() {
    std::lock_guard<std::mutex> lock(mtx);
    // 访问共享资源
}

线程通信

std::condition_variable 可以用于线程间的通信。

#include <condition_variable>
#include <thread>
#include <vector>

std::condition_variable cv;
std::mutex cv_m;
bool ready = false;

void producer() {
    std::unique_lock<std::mutex> lk(cv_m);
    // 生产数据
    ready = true;
    cv.notify_one();
}

void consumer() {
    std::unique_lock<std::mutex> lk(cv_m);
    cv.wait(lk, []{return ready;});
    // 消费数据
}

扩展阅读

更多关于 C++11 线程编程的内容,请参阅本站 C++11 线程编程深入指南

图片

线程并发

中心化处理,提高效率:

Thread_Concurrency

线程同步

互斥锁保护共享资源:

Mutex_Synchronization