gpt4 book ai didi

c - 线程函数时序

转载 作者:太空宇宙 更新时间:2023-11-04 03:56:47 25 4
gpt4 key购买 nike

当你创建一个线程时,它会自动启动参数中的线程函数吗?

我在用

iret1 =  pthread_create(&client[i++].tID, NULL, thread_function, NULL);
printf("Thread Created"); //for testing purposes

在我的线程函数中,我在最顶部有一个打印语句。例如:

void *thread_function(void *arg){
printf("Entered thread function");
...
}

不是打印Entered thread function,而是打印Thread Created

在我启动另一个线程之前它不会打印Entered thread function,这有什么原因吗?

最佳答案

你至少需要添加一个换行符\n在每个 printf(3) 的末尾format函数,经常调用fflush(3) ,例如添加调用 fflush(NULL);在你的两个之后printf ...

不要忘记 <stdio.h>功能被缓冲。参见 setvbuf(3)函数和手册页。

您的输出没有按您希望的那样立即打印的原因是它停留在 stdout 的缓冲区中。 .

而且您可能无法保证输出结果。个别字符可能会混合在一起。阅读unlocked_stdio(3)flockfile(3)了解详情。

您可能想阅读(多次)一些pthread tutorial ...

PS 你可以考虑直接使用 write(2)系统调用(不使用任何 <stdio.h> 函数)。

关于c - 线程函数时序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15840422/

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