C程序中的多个线程

gam*_*332 5 c unix multithreading pthreads

我在C中编写一个Unix应用程序,它使用多个控制线程.我遇到一个问题,主要功能在它产生的线程有一个更改完成他们的工作之前终止.我该如何防止这种情况发生.我怀疑我需要使用pthread_join原语,但我不确定如何.谢谢!

R S*_*hko 8

是的,您可以使用pthread_join()(请参阅其他答案,了解如何执行此操作).但是,让我解释一下pthread模型并向您展示另一种选择.

在Unix中,当主线程从main返回时,当任何线程调用exit()或最后一个线程调用pthread_exit()时,进程退出.基于最后一个选项,您可以简单地让主线程调用pthread_exit(),只要至少再运行一个线程,该进程就会保持活动状态.


jld*_*ont 5

是的,这样做是使用pthread_join函数:假设您的线程处于"可连接"状态.

  • pthread_create:在此函数返回控制之后,您的线程将执行您的线程函数.

  • 之后pthread_create,使用pthread_create中的tidpthread__join.

如果您的线程已分离,则必须使用其他一些技术,例如共享变量,等待信号,共享队列等.

这里有很好的参考资料.

  • 在没有评论的情况下进行低价投票......难道你不喜欢那些......不是! (2认同)
  • @dan:我想这几乎取决于**你首先尝试做什么**,现在不是.它不是**,因为这是你在某些**场合使用的技术,它使它成为**工具**.如果你在这个前提下投票给我(但我相信你没有)那么你可能想重新考虑一下. (2认同)