本文主要是介绍pthread_create()在C和C++使用区别(四十七),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.代码示例
int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*) 要使g++编译通过,方法如下:C++禁止将void指针随意赋值给其他指针。
因此你在把void thread(void)函数的入口转换为void*,然后当作参数调用pthread_create时就出现错误,因为pthread_create的参数里应该是指向形如void* fun(void*)函数的一个指针。
可以修改void thread(void)为void* thread(void*),然后去掉调用时的(void*)强制转换,错误消除。例:[html] view plain copyprint?
static void* thread( void* ){ int i; for( int i=0; i<3; i++ ){ cout << " This is a thread " << endl; }
} int main( int arg, char** argv ){ pthread_t id; int i, ret; ret = pthread_create( &id, NULL, thread, NULL); if( ret != 0 ) { cout << " Create thread error!" << endl; exit(1); } cout << "This is the main process" << endl; pthread_join( id, NULL ); return(0);
} 换成gcc[html] view plain copyprint?
void thread( void ){ int i; for( int i=0; i<3; i++ ){ cout << " This is a thread " << endl; }
} int main( int arg, char** argv ){ pthread_t id; int i, ret; ret = pthread_create( &id, NULL, (void *) thread, NULL); if( ret != 0 ) { cout << " Create thread error!" << endl; exit(1); } cout << "This is the main process" << endl; pthread_join( id, NULL ); return(0);
}
这篇关于pthread_create()在C和C++使用区别(四十七)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!