在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++进行多线程编程。记得在实际编程中注意线程安全和性能优化。