示例(source):
#include <pthread.h>
#include <stdio.h>
#define NUM_THREADS 5
void *PrintHello(void *threadid)
{
long tid;
tid = (long)threadid;
printf("Hello World! It's me, thread #%ld!\n", tid);
pthread_exit(NULL);
}
声明该函数返回一个void指针,但其体内没有return语句。这是怎么回事?
通常,如果函数已声明为返回值(在本例中为void指针)并且没有return语句,则其行为未定义。
评论说pthread_exit(NULL)
等同于调用return NULL
- 它怎么可能?您可以B()
调用A()
中的B()
函数,A
调用将返回{{1}}。返回语句指的是它们的放置函数。
答案 0 :(得分:0)
我们只能推测可能发生的事情,但因为它看起来像是“Hello,World!”程序,合理的猜测是指向该函数的指针旨在传递给pthread_create()
。 pthread_create()
需要指向具有该签名的函数的指针。这是一个奇怪的建筑;对于函数来说,返回NULL
。