【发布时间】:2014-06-06 12:33:55
【问题描述】:
我正在使用下面的函数,它将使用 pthread_create() api 作为单独的线程启动。
static void * threadFunc(void *arg)
{
char *s = (char *) arg;
printf("%s", s);
return (void *) strlen(s);
}
我的问题:
如果strlen(s) 的值为8(比如说),
在某些架构上,返回值存储在 %eax 中。这个值 8 对启动上述线程的 pthread_join() 调用中的主线程是否可见?
【问题讨论】:
-
每个程序都有全局/堆栈/堆段。我猜返回值应该在全局段中,否则 pthread_join() 将无法访问它,如果返回值来自堆栈区域。
-
函数返回值是如何实现的?
-
要让
pthread_join()拉取值,请使用pthread_exit()从(P)线程返回。 -
一般来说,C 函数调用,据我所知,返回值存储在 accumulator(AC) 注册表中,调用者将读取该累加器。但我不知道 strlen() 是如何工作的
-
每个问题一个问题。这不是留言板。
标签: c multithreading assembly pthreads