考虑以下情况:
2个线程,其中1应该初始化一些数据,这需要不确定的时间量,而另一个线程需要等待它。
我遇到的问题:
我怎样才能做到这一点?
编辑:一个可能不是那么不重要的事情我(不幸的是)从最初的问题中遗漏了:我可以访问一些可以从所有线程访问的指针,并且在启动时应该是NULL,所以这应该有助于同步。
编辑2:通过实验我发现“另一个线程”实际上总是被生成并调用一个函数,需要在主线程启动之前返回。不幸的是,我必须等到主线程完成它的工作,这使得整个事情变得不可能。因此,从现在开始,问题可以从理论上加以考虑(并且一旦软件提供商改变或提供了一种工作方式,就可以再次实用)
还添加了g-wan(web服务器执行c脚本作为servlets /处理程序/维护脚本)标记 - 最初我不想添加此标记,因为问题不是特定于软件,但似乎它可能帮助理解“为什么”以及情况;我的案例中的“主”线程是维护脚本,“其他线程”是连接处理程序。
我的问题已在软件供应商的支持/帮助下“解决”了,所以此时我会接受pthread_cond_wait的答案,因为就我所说,这通常是正确的。
答案 0 :(得分:2)
假设您使用的是pthread
,那么您可以使用pthread_cond_wait
来同步线程。当第一个线程完成它的任务时,发出条件变量的信号,第二个线程应该使用pthread_cond_wait
来等待相同的条件变量。
答案 1 :(得分:0)
1.也许您可以使用other thread
作为父线程,并使用fork
创建init thread
。家长使用wait
或waitpid
来等待init thread
。
2.如果只是两个线程,你可以使用signal
。在init thread
完成之后。发送signal
,而其他线程阻塞自己并等待信号一旦收到信号,就会清理工作。