gpt4 book ai didi

c - 如何等待其他线程初始化并在之后正确清理?

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

考虑以下情况:

2 个线程,其中 1 个应该初始化一些数据,这需要不确定的时间量,另一个线程需要等待。

我遇到的问题:

  • 在这两个线程中的任何一个运行之前,我无法执行任何操作,因为我无法控制生成过程(C 代码在类似时尚的脚本中编译和执行)。
  • 我不知道 init 线程是否先于另一个线程到达代码中的任何点,因为它们是紧接着彼此启动的,从我的角度来看,一个执行顺序变得不确定
  • 我需要确保主线程的初始化部分首先运行(例如,其他线程不应尝试使用未初始化的部分)
  • 之后我想清理用于此同步的所有内容,因为这是一个长期运行的过程中的一次性事情,即使在内存计数上也有非常小的节省。例如。之后应销毁互斥量/信号量。

我怎样才能做到这一点?

编辑:我(不幸的是)从最初的问题中遗漏了一个可能不是那么不重要的事情:我可以访问一些可以从所有线程访问的指针,并且在开始时应该为 NULL,所以这可能有助于同步。

编辑 2:通过实验我发现“另一个线程”实际上总是被生成并且一个函数被调用并且需要在主线程启动之前返回。不幸的是,那时我必须等待主线程完成它的工作,这使得整个事情变得不可能。因此,从现在开始可以从理论上考虑这个问题(并且希望再次实用,只要软件提供商改变它或提供一种使其工作的方法)

还添加了 g-wan(Web 服务器执行 c 脚本作为 servlets/handler/maintenance 脚本)标签 - 最初我不想添加这个标签,因为问题不是特定于软件的,但看起来它可能帮助理解“为什么”以及情况;在我的例子中,“主”线程是维护脚本,“其他线程”是连接处理程序。


在软件供应商的支持/帮助下,我的问题已“解决”,因此此时我将接受 pthread_cond_wait 答案,因为据我所知,它通常是正确的。

最佳答案

假设你正在使用pthread,那么你可以使用pthread_cond_wait同步线程。当第一个线程完成它的任务时,向条件变量发出信号,第二个线程应该使用 pthread_cond_wait 来等待相同的条件变量。

关于c - 如何等待其他线程初始化并在之后正确清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18129399/

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