如何在Ubuntu中实现C++多线程编程
作者:水悠悠予安
时间:2026-07-01
浏览:0
在Ubuntu中,利用C++11标准库的头文件实现多线程编程,需先通过apt安装g++编译器。编写代码演示线程创建、执行与等待流程,调用std::thread即可轻松实现并发,编译时需加-pthread选项。
在Ubuntu上搞C++多线程编程,其实比你想象的要简单——只要你用上了C++11标准库里的头文件,一切就能顺滑地跑起来。下面咱们一步步来,从环境准备到实际代码,再到同步技巧,给你理清整条路。

步骤1:安装必要的工具
先检查一下系统里有没有g++编译器。如果还没有,终端里输两行命令就搞定:
sudo apt update
sudo apt install g++
步骤2:编写多线程C++代码
新建一个源文件,比如multithread_example.cpp,然后敲进下面这段示例。别被它简单的外表骗了——它演示了多线程最核心的“创建-执行-等待”流程。
#include
#include
// 线程函数
void helloFunction() {
std::cout << "Hello from a thread!" << std::endl;
}
int main() {
// 创建一个线程
std::thread t(helloFunction);
// 等待线程完成
t.join();
std::cout << "Hello from main thread!" << std::endl;
return 0;
}
步骤3:编译代码
编译时最关键的是别忘了加上-pthread选项,否则链接器会找不着线程库。用这条命令:
g++ -std=c++11 -pthread multithread_example.cpp -o multithread_example
步骤4:运行程序
跑起来看看效果:
./multithread_example
输出应该类似这样:
Hello from a thread!
Hello from main thread!
两个“Hello”先后出现,证明了子线程和主线程都在正常工作。当然,这只是开胃菜。
进一步学习
真实场景下,多线程要面对的坑远不止“hello world”这么简单。下面这几个方向值得深入:
- 线程同步:用
std::mutex、std::lock_guard、std::unique_lock来避免数据竞争。 - 条件变量:通过
std::condition_variable实现线程间的“等待-通知”机制。 - 原子操作:用
std::atomic来做无锁编程——性能好,但需要谨慎设计。 - 线程池:自己手写太麻烦?可以借助第三方库(比如
ThreadPool)管理一批线程的复用。
示例:线程同步
来看一个经典的互斥锁示例,它能保证多个线程打印时不会乱成一锅粥:
#include
#include
#include
std::mutex mtx; // 全局互斥锁
void printMessage(const std::string& msg) {
mtx.lock(); // 加锁
std::cout << msg << std::endl;
mtx.unlock(); // 解锁
}
int main() {
std::thread t1(printMessage, "Hello from thread 1!");
std::thread t2(printMessage, "Hello from thread 2!");
t1.join();
t2.join();
return 0;
}
编译运行后,你会发现两个线程的输出永远不会交错——锁保证了同一时刻只有一个线程能碰cout。这就是最基础的同步手段。
从环境搭建到实际代码,再到同步实战,这些步骤足够你快速上手Ubuntu下的C++多线程开发。如果想深入,不妨试试把条件变量和原子操作也练一练,多线程的世界远比你想象的更有趣。
作者最新文章
灵活计算器
2026-09-16 17:45
苹果折叠屏iPhone预计售价是多少
2026-09-14 13:44
OpenAI GPT-6 Astra 自主通关《传送门》:技术原理与实验成本解析
2026-09-08 19:08
苹果与铠侠签署NAND长期供应协议:3-5年长约与不设价格上限背后的供应链战略
2026-09-08 16:58
PDF转PPT操作指南:在线、本地与批量转换及结果核对
2026-09-04 15:04
上一篇:
Ubuntu下C++项目如何进行性能优化
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































