将函数名称作为字符指针传递给C中的pthread_create

时间:2014-03-28 19:54:57

标签: c linux pthreads

我想使用pthread_create函数创建一个pthread并将函数名称传递为

char *function_name="get_time";

int rc = pthread_create(&thread_arr[threadNum], NULL,
    *function_name, (void *) output_cur_node->data);

还尝试使用(void*)&function_name

这似乎不会进入函数get_time()

相反,当我在下面使用时

int rc = pthread_create(&thread_arr[threadNum], NULL,
    get_time, (void *) output_cur_node->data);

它工作正常。

请告知此处有什么问题。

2 个答案:

答案 0 :(得分:3)

你需要传递函数的地址,但是你试图传递一个字符串的地址

答案 1 :(得分:0)

pthread_create的原型如下:

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                   void *(*start_routine) (void *), void *arg);

第三个参数必须是函数指针,其类型为

  

void *(* start_routine)(void *)

所以无论何时你试图通过这样做来传递论证

char *function_name="get_time";
(void*)&function_name

实际上意味着 void * 类型与上述类型不匹配。因此会报告编译时错误。