C++线程

线程是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++通过线程解决了多核编程难题,但是也增加了程序复杂度。