我问的
是C++ 11标准的库.
假设您有以下功能:
void func1(int a, int b, ObjA c, ObjB d){ //blahblah implementation } int main(int argc, char* argv[]){ std::thread(func1, /*what do do here??*/); }
你如何将所有这些参数传递给线程?我尝试列出如下参数:
std::thread(func1, a,b,c,d);
但它抱怨说没有这样的构造函数.解决这个问题的一种方法是定义一个包装参数的结构,但还有另一种方法吗?
你真的只是传递它们std::thread(func1,a,b,c,d);
应该编译如果对象存在,但它是错误的另一个原因.由于没有创建对象,因此无法加入或分离线程,程序将无法正常工作.因为它是一个临时的析构函数被立即调用,因为线程没有被连接或分离但是std::terminate
被调用.在温度被破坏之前,你可能std::join
或std::detach
它可以std::thread(func1,a,b,c,d).join();//or detach
.
这是应该怎么做的.
std::thread t(func1,a,b,c,d); t.join();
如果你不知道连接和分离之间的区别,你也可以分离线程,读取线程.