首页 > 代码库 > pthread_create 报函数参数不匹配问题
pthread_create 报函数参数不匹配问题
pthread_create方法遇到类方法时总会报 argument of type ‘void* (Thread::)(void*)’ does not match ‘void* (*)(void*)’
pthread_create方法第三个参数只能是C函数指针或者类到静态函数指针。
下面记录一下解决方法
1 include <stdio.h> 2 #include <pthread.h> 3 #include <unistd.h> 4 5 class Thread{ 6 public: 7 Thread(int num = 5):_num(num){ } 8 9 static void *work(void *args){ //静态函数有访问函数, 变量限制, 这里直接传入类指针变量 10 Thread *handle = (Thread*)args; 11 for (int i = 0; i < handle->_num; ++i){ 12 printf("sleep i = %d\n", i); 13 sleep(1); 14 } 15 pthread_exit(NULL); 16 } 17 18 int _num; 19 }; 20 21 void *inc_count(void *args){ 22 for (int i = 0; i < 5; ++i){ 23 printf("inc_count i = %d\n", i); 24 sleep(1); 25 } 26 pthread_exit(NULL); 27 } 28 29 int main(){ 30 Thread obj; 31 pthread_t threads[2]; 32 33 pthread_create(&threads[0], NULL, inc_count, NULL); //必须是C函数指针 34 pthread_create(&threads[1], NULL, Thread::work, &obj); //或者时类静态函数指针 35 obj._num = 10; 36 37 pthread_join(threads[0], NULL); 38 pthread_join(threads[1], NULL); 39 return 0; 40 }
pthread_create 报函数参数不匹配问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。