gpt4 book ai didi

c - 在单个 Pthread 中打印

转载 作者:太空狗 更新时间:2023-10-29 16:00:58 25 4
gpt4 key购买 nike

我正在尝试使用 C 中的 Pthreads 实现一个程序。现在,我试图让单个线程打印“Hi”:

void * generator(void *arguments){
printf("Hi");
return NULL;
}

int main(int argc, const char* argv[]){
pthread_create(&threads_ids[0], NULL, &generator, NULL);=
}

这不起作用,也不会打印任何内容。但是,当我将 pthread 的创建放在 for 循环中时,它会打印“Hi”,但在每次执行时出现的情况都不同。

这是正常行为吗?如果是的话;我该如何解决?提前致谢!

最佳答案

是因为你的主线程返回,退出了进程。这意味着您创建的线程永远没有机会运行。

与仅仅从 main() 返回不同,从 main() 调用 pthread_exit(0) 将让另一个线程继续执行。

或者,您可以通过在您创建的线程上调用 pthread_join() 来等待线程完成执行。

当您在循环中执行时,您创建的一些线程可能会在主线程退出之前执行,因此看起来“工作”(打印一些 Hi)。但它确实存在与您发布的代码相同的问题。

关于c - 在单个 Pthread 中打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40514240/

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