gpt4 book ai didi

c - 使用 pthread_exit 和 pthread_join。 pthread_exit 不会终止调用函数

转载 作者:太空宇宙 更新时间:2023-11-04 04:06:04 24 4
gpt4 key购买 nike

海湾合作委员会 4.6.0 c89

我只是在尝试使用 pthread_exit 和 pthread_join。

我在 pthread_exit 中唯一注意到的是它在 main 返回之前没有显示打印消息。然而,pthread_join 正是这样做的。

我本以为应该显示打印语句。如果不是,是否意味着 main 在使用 pthread_exit 时没有正确终止?

非常感谢您的任何建议,

我的源代码片段source.c文件:

void* process_events(void)
{
app_running = TRUE;
int counter = 0;

while(app_running) {
#define TIMEOUT 3000000
printf("Sleeping.....\n");
usleep(TIMEOUT);

if(counter++ == 2) {
app_running = FALSE;
}
}

printf("Finished process events\n");

return NULL;
}

源代码片段main.c文件:

int main(void)
{
pthread_t th_id = 0;
int th_rc = 0;

th_rc = pthread_create(&th_id, NULL, (void*)process_events, NULL);
if(th_rc == -1) {
fprintf(stderr, "Cannot create thread [ %s ]\n", strerror(errno));
return -1;
}

/*
* Test with pthread_exit and pthread_join
*/

/* pthread_exit(NULL); */

if(pthread_join(th_id, NULL) == -1) {
fprintf(stderr, "Failed to join thread [ %s ]", strerror(errno));
return -1;
}

printf("Program Terminated\n");

return 0;
}

最佳答案

您所看到的是预期的。 pthread_exit 从不 返回。它立即停止调用它的线程(然后运行清理处理程序(如果有的话),然后可能运行特定于线程的数据析构函数)。

pthread_exit 之后 main 中的任何内容都不会运行。

关于c - 使用 pthread_exit 和 pthread_join。 pthread_exit 不会终止调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5769628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com