第二章 线程管理
2.1 线程管理的基础
每个程序至少有一个线程:执行main()函数的线程,其余线程有其各自的入口函数。线程与原始线程(以main()函数为入口的线程)同时运行。如同main()函数执行完会退出一样,当线程执行完入口函数后,线程也会退出。
2.1.1 启动线程
线程在std::thread对象创建时启动。
void do_some_work();
std::thread my_thread(do_some_work);
std::thread可以调用可调用类型构造,将带有函数调用符类型的实例传入std::thread类中。
class background_task{
public:
void operator()() const{
do_something();
}
};
background_task f;
std::thread my_thread(f);
代码中,提供的函数对象会复制到新线程的存储空间中,函数对象的执行和调用都在线程的内存空间中进行。