void foo()
{
std::this_thread::sleep_for(std::chrono::seconds(1));
}
int main()
{
std::thread t;
std::cout << "before starting, joinable: " << t.joinable() << '\n';
t = std::thread(foo);
std::cout << "after starting, joinable: " << t.joinable() << '\n';
t.join();
}
一个简单的多线程的使用
t = std::thread(foo);在这里如果我的线程函数是有参数的话
列如线程函数void foo(void *arg)并且是类的成员函数
t = std::thread(foo,this,(void*)arg)
那如果传递的参数不是指针而是引用呢?
这里需要std::ref引用绑定
t = std::thread(foo,this,std::ref(arg) )
std::ref 用于取某个变量的引用,引入其是为了解决函数式编程的一些传参问题。
多线程std::thread的可调用对象期望入参为引用时,必须显式通过std::ref来绑定引用进行传参
这个问题我在一次面试的时候背面试官问到过,当时我是不知道可以传引用的,在这里就总结一下
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)