std::thread f()
{
void some_function(); // <- here
return std::thread(some_function);
}
std::thread g()
{
void some_other_function(int); // <- here
std::thread t(some_other_function,42);
return t;
}
问问题
234 次
3 回答
4
像这样的行:
void some_function();
只需声明一个稍后将定义的函数。函数不一定必须在函数范围之外声明。
于 2010-09-15T02:21:19.583 回答
1
正如您所想,这只是一个函数声明。将函数声明放在头文件中是很常见的(也是推荐的),但这绝不是必需的。它们可能在函数体中。
于 2010-09-15T02:20:58.097 回答
1
定义一个返回thread
对象的函数:
std::thread f()
{
声明一个extern
没有返回参数的函数void
(通常这不在本地范围内完成,但它是有效的):
void some_function();
启动一个执行该函数的线程,并返回一个句柄:
return std::thread(some_function);
}
与之前相同的交易:
std::thread g()
{
void some_other_function(int);
但这是无效的。您不能制作线程的副本,因此从技术上讲,制作本地thread
对象然后返回它是不可行的。如果它编译了,我会感到惊讶,但如果是这样,它可能会在您为调试器构建时中断。
std::thread t(some_other_function,42);
return t;
}
不过,这会起作用:
return std::move( t );
于 2010-09-15T02:22:18.460 回答