关于创建线程的函数:extern int pthread_create __P ((pthread_t *__thread, __const pthread_attr_t *__attr,void *(*__start_routine) (void *), void *__arg));
解释一下第三个参数的具体意思。
关于创建线程的函数:extern int pthread_create __P ((pthread_t *__thread, __const pthread_attr_t *__attr,void *(*__start_routine) (void *), void *__arg));
解释一下第三个参数的具体意思。
还有有挑战的吗?这个不够爽~~(我只用了不到20秒左右就看出来了)
pthread_t *__thread,
__const pthread_attr_t *__attr,
void *(*__start_routine) (void *), //函数指针---------指向一个参数为void*,返回值为void*的函数.
void *__arg.
[此贴子已经被作者于2004-09-15 18:06:51编辑过]
我知道void *(*__start_routine)是指向一个函数的。我想问的是:::::
void *(*__start_routine) 后面的(void*)是什么?是这个函数带的参数吗?如果是的话,那么第四个参数是干什么的?
呵呵,我也知道分成这两部分。
我想请教各位高手的是:
这个函数是linux系统的一个自带的创建线程函数,不过我还有点不明白的是,如果我想在函数定义部分打印优先级,怎样把优先级传到函数。
我写的函数(部分)是这样的:
pthread_attr_t attr_2; //线程1的属性结构 pthread_t id_2; //线程1 标识 sched_param param_2; //存放优先级结构 int newprio2=80; //优先级 pthread_attr_init(&attr_2);//初始化 pthread_attr_setscope(&attr_2,PTHREAD_SCOPE_SYSTEM);//设为绑定 pthread_attr_getschedparam(&attr_2,¶m_2); //取优先级 param.sched_priority=newprio2;//赋值 pthread_attr_setschedparam(&attr_2,¶m_2); //放优先级 ret1=pthread_create(&id_2,&attr_2,thread_2,&newprio2); //创建线程
在创建线程的时候,我想把优先级传到thread_2函数中去,怎样传?
是ret1=pthread_create(&id_2,&attr_2,thread_2,&newprio2); 还是
ret1=pthread_create(&id_2,&attr_2,thread_2(int * newprio2),NULL);
如果是后者的话,而extern int pthread_create __P ((pthread_t *__thread, __const pthread_attr_t *__attr,void *(*__start_routine) (void *), void *__arg)); 是linux系统的一个函数,不知道可不可以修改各个参数的类型,如果不可以修改的话,那么上面的第二种传递的方法就是错的。
这个没玩过 ,不过带函数指针显然不能这么带哈 ret1=pthread_create(&id_2,&attr_2,thread_2(int * newprio2),NULL); 这么代的意思就是thread_2(int * newprio2)的返回值是一个函数指针,应该是直接代thread_2就行了,其实说白了就是个回调,在pthread_create里调用thread_2;其他的不知道了,没有发言权。