Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C pthread返回例程_C_Pthreads - Fatal编程技术网

C pthread返回例程

C pthread返回例程,c,pthreads,C,Pthreads,这是我的指令,我的例程必须有一个返回值,它需要被返回 i、 e: 我启动线程,它做它需要做的事情。要问的问题是,如何不断地一次又一次地重新启动线程以完成其工作,同时仍然能够返回一个整数(通过线程的运行生成…)。请注意,根据我的理解,我需要通过线程的int返回值使用“return”调用 建议?我正在尝试找出是否有一些我缺少的与pthreads相关的标志或函数,允许线程在结束时重新启动。首先,如果使用pthreads调用上述函数,可能会遇到一些问题。传递给pthread\u create的函数指针的

这是我的指令,我的例程必须有一个返回值,它需要被返回

i、 e:

我启动线程,它做它需要做的事情。要问的问题是,如何不断地一次又一次地重新启动线程以完成其工作,同时仍然能够返回一个整数(通过线程的运行生成…)。请注意,根据我的理解,我需要通过线程的int返回值使用“return”调用


建议?我正在尝试找出是否有一些我缺少的与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 */
}