在Linux环境下进行C++多线程编程,主要需要了解C++11标准引入的线程库及其相关组件,同时熟悉Linux特有的线程库如pthread,以及线程同步和通信等高级概念。以下是一些基础知识和示例代码,帮助你入门Linux下的C++多线程编程。
std::thread
类创建线程,并通过join()
等待线程结束。std::mutex
保护共享数据,防止数据竞争。std::condition_variable
实现线程间的条件等待。std::future
和std::promise
进行线程间的数据传递。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++进行多线程编程。记得在实际编程中注意线程安全和性能优化。