在 Linux 下用 C++ 配置和使用多线程,常见方式有三种:C++11 标准线程(推荐)、POSIX 线程(pthread)、以及 第三方库(如 Boost)。下面按从简单到底层讲,并给出可运行示例和编译方法。
-pthread#include <iostream>
#include <thread>
void worker(int id) {
std::cout << "Thread " << id << " running\n";
}
int main() {
std::thread t1(worker, 1);
std::thread t2(worker, 2);
t1.join();
t2.join();
return 0;
}
g++ main.cpp -std=c++11 -pthread -o main
./main
#include <mutex>
std::mutex mtx;
void safe_print(int id) {
mtx.lock();
std::cout << "Thread " << id << "\n";
mtx.unlock();
}
✅ 推荐用:
std::lock_guard<std::mutex> lock(mtx);
#include <pthread.h>
#include <iostream>
void* thread_func(void* arg) {
int id = *(int*)arg;
std::cout << "pthread " << id << "\n";
return nullptr;
}
int main() {
pthread_t t1, t2;
int a = 1, b = 2;
pthread_create(&t1, nullptr, thread_func, &a);
pthread_create(&t2, nullptr, thread_func, &b);
pthread_join(t1, nullptr);
pthread_join(t2, nullptr);
}
g++ pthread_demo.cpp -pthread -o pthread_demo
#include <thread>
unsigned n = std::thread::hardware_concurrency();
✅ 推荐做法
std::threadepoll + 线程池⚠️ 注意
detach() 除非很清楚后果如果你愿意,我可以帮你:
你可以直接把你的代码或报错贴出来。