温馨提示×

Linux下C++多线程编程指南

小樊
81
2024-12-11 03:01:17
栏目: 编程语言

在Linux环境下进行C++多线程编程,主要需要了解C++11标准引入的线程库及其相关组件,同时熟悉Linux特有的线程库如pthread,以及线程同步和通信等高级概念。以下是一些基础知识和示例代码,帮助你入门Linux下的C++多线程编程。

C++11线程库基本使用方法

  • 线程的创建和管理:使用std::thread类创建线程,并通过join()等待线程结束。
  • 线程同步:使用std::mutex保护共享数据,防止数据竞争。
  • 条件变量:使用std::condition_variable实现线程间的条件等待。
  • 线程间通信:使用std::futurestd::promise进行线程间的数据传递。

Linux特有的线程库(pthread)

  • 创建线程:使用pthread_create()函数创建新线程。
  • 线程同步:使用互斥锁(pthread_mutex_t)和条件变量(pthread_cond_t)保护共享资源。
  • 线程结束:使用pthread_exit()函数结束线程。

示例代码

以下是一个简单的C++11多线程示例,展示了如何创建和管理线程,以及使用互斥锁进行同步:

#include <iostream>
#include <thread>
#include <vector>
#include <mutex>

std::mutex mtx;

void print_block(int n, char c) {
    std::unique_lock<std::mutex> lck(mtx);
    for (int i = 0; i < n; ++i) {
        std::cout << c;
    }
    std::cout << '\n';
}

int main() {
    std::vector<std::thread> threads;
    // 创建 5 个线程,每个线程打印 5 个 'A'
    for (int i = 0; i < 5; ++i) {
        threads.emplace_back(print_block, 5, 'A');
    }
    // 等待所有线程结束
    for (auto& th : threads) {
        th.join();
    }
    return 0;
}

通过以上内容,你可以开始在Linux环境下使用C++进行多线程编程。记得在实际编程中注意线程安全和性能优化。

0