ozg*_*gur 1 c c++ pthreads parameter-passing void-pointers
我想了解pthread.
但是,需要创建如下的线程方法:
void *SomeMethod(void* x)
{
//Do Something
}
Run Code Online (Sandbox Code Playgroud)
为什么有必要创建一个接受void指针的函数?我们不能使用像这样的函数的pthread吗?
void SomeMethod()
{
}
Run Code Online (Sandbox Code Playgroud)
因为pthread_create函数接受一个类型的参数,void* (*)(void*)它是一个函数接受void*并返回a void*,所以使用pthread_create你需要使用的函数来创建一个线程.
该pthread_createAPI需要,为了让您可以将数据传递给新的线程,再飞回来的数据.如果您不想传递任何内容,则仍需要满足该接口,但只需将其传递为NULL即可.
仅仅因为您现在不想将任何参数传递给新线程并不意味着API应该被设计为仅支持您当前的用例.根据函数获取编写的API void*(可以选择性地传递NULL)比使用不带参数的函数的API更好,并要求用户提出自己的解决方案来将数据传递给新线程.
在C++中,您可以为新线程使用任何类型的函数,并将其传递给您需要的任何参数:
std::thread t(&SomeMethod);
Run Code Online (Sandbox Code Playgroud)