Typ*_*Hog -4 c++ multithreading pointers function void
声明一个函数std::thread和void*我使用它之间有区别void吗?
void encrypt(/*arguments*/)
{
}
// ...
std::thread(encrypt, /*arguments*/);
Run Code Online (Sandbox Code Playgroud)
我刚刚阅读了一些关于void*在互联网上使用线程的内容,并希望确保我正在使用std::thread而不是void*有充分理由.我一般都在强调我写的东西太多了.
就在这里.例如这个功能:
void func() { }
Run Code Online (Sandbox Code Playgroud)
形成良好.另一方面,这一个:
void* func() { }
Run Code Online (Sandbox Code Playgroud)
违反语言约束,并且格式不正确.区别?您不能省略return语句,否则您的程序将具有未定义的行为.
void在这种情况下,指定缺少返回类型,但是void*是完整类型,因此必须为要返回的函数指定值.
在上下文中std::thread,您应该将其指定为void.无论如何,任何返回值都会被忽略,所以只需保持程序的良好形成,而不是为了它而返回一些无意义的东西.
如果您在线阅读有关Pthreads的信息,那么他们确实期望接受并返回的回调void*.这样他们就可以支持任何参数和任何返回类型.但那是一个C API,所以必须这样做.惯用的C++ API std是类型感知的.就是void这样.如果您关心返回值,请查看std::future.
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |