线程是C++实现多线程编程的机制,可以提高程序并发性能。
一、std::thread
C++11中可以使用std::thread来创建线程:
#include <thread>
void func() {}
int main() {
std::thread t(func);
t.join();
}
std::thread通过函数指针或lambda表达生成线程。
二、传参和获取ID
可以向线程函数传参,并获取线程id:
std::thread t(func, 1, "abc", 2);
auto id = t.get_id();
三、 Detach分离线程
分离线程会自行管理生命周期:
t.detach();
四、线程同步
可以使用mutex、lock等进行线程同步。
五、线程局部存储
thread_local关键字可以声明线程局部变量。
六、传递和所有权
线程不可复制,需要通过std::move传递所有权。
七、多线程风险
需要注意死锁、数据竞争等问题。
C++通过线程解决了多核编程难题,但是也增加了程序复杂度。