|
|
C++ 从 C++11 标准开始内置支持多线程编程,主要通过 <thread> 头文件和相关同步机制来实现。下面简要介绍如何处理多线程:
1. 创建线程
使用 std::thread 类可以轻松创建新线程。只需传递一个函数或可调用对象给线程构造函数。
示例代码:
- #include <iostream>
- #include <thread>
- void myFunction() {
- std::cout << "线程正在运行!" << std::endl;
- }
- int main() {
- std::thread t(myFunction); // 创建并启动线程
- t.join(); // 等待线程结束
- return 0;
- }
复制代码
2. 线程同步
多线程共享资源时,需要使用同步机制避免数据竞争。常用工具包括:
- 互斥锁(std::mutex):保护共享数据。
- 条件变量(std::condition_variable):用于线程间通信。
- 锁保护(std::lock_guard 或 std::unique_lock):自动管理锁。
示例代码(使用互斥锁):
- #include <iostream>
- #include <thread>
- #include <mutex>
- std::mutex mtx;
- int sharedData = 0;
- void increment() {
- std::lock_guard<std::mutex> lock(mtx);
- sharedData++;
- std::cout << "数据已增加: " << sharedData << std::endl;
- }
- int main() {
- std::thread t1(increment);
- std::thread t2(increment);
- t1.join();
- t2.join();
- return 0;
- }
复制代码
3. 注意事项
- 总是使用 join() 或 detach() 管理线程生命周期。
- 避免死锁:确保锁的顺序一致。
- 对于高性能场景,可以考虑原子操作(std::atomic)。
总之,C++ 的多线程处理依赖于标准库提供的线程和同步类,使用时注意同步和资源管理即可。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|