发布于2026-07-31 阅读(0)
扫一扫,手机访问
在CentOS上跑C++多线程,其实比你想象的要简单。C++11标准库自带的头文件,就是一套跨平台的线程工具,不管你在哪个Linux发行版上,写法基本一样。下面这个例子,拿CentOS 7演示一遍,从环境搭建到运行,一步到位。

第一步,先确认编译器版本。CentOS 7自带的GCC默认是4.8以下,不支持C++11的线程库。需要升级到4.8或更高版本。最简单的办法是用SCL(Software Collections)来安装:
sudo yum install centos-release-scl
sudo yum install devtoolset-7
scl enable devtoolset-7 bash
这条命令安装的是GCC 7系列,足够用了。执行完scl enable之后,当前终端会话里就能用新的GCC了。
第二步,写一个简单的测试文件,比如multithread_example.cpp,把下面的代码贴进去:
#include
#include
void hello_function() {
std::cout << "Hello from a thread!" << std::endl;
}
int main() {
// 创建一个线程
std::thread t(hello_function);
// 等待线程完成
t.join();
std::cout << "Hello from the main function!" << std::endl;
return 0;
}
这段代码逻辑很简单:主线程创建一个子线程来执行hello_function,然后调用join()等待子线程结束,最后主线程自己打印一句话。注意一定要加join()或者detach(),否则程序退出时会崩溃。
第三步,编译。用g++加上-std=c++11和-pthread两个选项:
g++ -std=c++11 -pthread multithread_example.cpp -o multithread_example
这里-pthread是必须的,它告诉编译器链接POSIX线程库。没有这个选项,链接会报错。
第四步,运行:
./multithread_example
输出应该是两行,顺序可能交替,但内容大致是:
Hello from a thread!
Hello from the main function!
如果看到这两行,恭喜你,多线程跑通了。
平时做项目,光有还不够。比如线程池、条件变量、互斥锁这些高级功能,C++11标准库都提供了对应类:std::mutex、std::condition_variable、std::future等。它们配合一起用,能写出很健壮的多线程代码。
另外提一句,CentOS上也可以使用Boost.Thread,它比标准库更早成熟,跨平台兼容性更好,但需要额外安装Boost库。如果你项目里已经依赖Boost,直接用Boost.Thread也无妨;否则还是用标准库更省心,不用额外引入依赖。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8