我在C中有一个函数:
void start_fun()
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
我想用来pthread_create()创建一个线程,启动例程是start_fun(),如果没有修改void start_fun(),如何获取函数指针start_fun();
如果start_fun在代码中的任何地方编写没有任何参数的函数名,您将获得一个指向该函数的函数指针.
但是 pthread_create需要格式化的功能void* func (void*).
如果重写函数不是一个选项,你将不得不写一个包装器:
void* call_start_fun (void* dummy)
{
(void)dummy;
start_fun();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后将call_start_fun传递给pthread_create:
pthread_create(&thread, NULL, call_start_fun, NULL);
Run Code Online (Sandbox Code Playgroud)