C pthread返回例程
这是我的指令,我的例程必须有一个返回值,它需要被返回 i、 e: 我启动线程,它做它需要做的事情。要问的问题是,如何不断地一次又一次地重新启动线程以完成其工作,同时仍然能够返回一个整数(通过线程的运行生成…)。请注意,根据我的理解,我需要通过线程的int返回值使用“return”调用C pthread返回例程,c,pthreads,C,Pthreads,这是我的指令,我的例程必须有一个返回值,它需要被返回 i、 e: 我启动线程,它做它需要做的事情。要问的问题是,如何不断地一次又一次地重新启动线程以完成其工作,同时仍然能够返回一个整数(通过线程的运行生成…)。请注意,根据我的理解,我需要通过线程的int返回值使用“return”调用 建议?我正在尝试找出是否有一些我缺少的与pthreads相关的标志或函数,允许线程在结束时重新启动。首先,如果使用pthreads调用上述函数,可能会遇到一些问题。传递给pthread\u create的函数指针的
建议?我正在尝试找出是否有一些我缺少的与pthreads相关的标志或函数,允许线程在结束时重新启动。首先,如果使用pthreads调用上述函数,可能会遇到一些问题。传递给
pthread\u create
的函数指针的签名必须是void*functionname(void*)
,也就是说,它必须是一个接受单个指向void参数的指针并返回指向void的指针的函数
幸运的是,void*
可以在int
之间进行强制转换,相对来说痛苦较小,因此函数的返回可以如下所示:
return (void*) 5;
获取该返回值要复杂一些。你对在返回后继续线程感到困惑是对的;你不能。您要做的是加入线程,这只是等待线程返回。完成后,您可以像以前一样重新启动线程
pthread_t mythread;
int result;
while(1){
pthread_create(&mythread, NULL, mySuperThread, NULL);
pthread_join(mythread, &result);
/* do something with result */
}
我就是这么想的。非常感谢。我相信我提出的问题有一些错误。有趣的是,即使我使用了一个不正确的方法签名,它仍然接受它并且工作没有问题。我在用Ubuntu
pthread_t mythread;
int result;
while(1){
pthread_create(&mythread, NULL, mySuperThread, NULL);
pthread_join(mythread, &result);
/* do something with result */
}