假设我有一棵树,并假设我在树的每个节点中都有一个条件变量。
假设 5 个节点试图插入到我的树中(已经有 10 个节点),由于某种原因,5 个节点无法插入(它们正在等待删除某些节点),所以我让它们等待使用它们的条件变量. 现在树中正在发生删除,我想检查等待的那些是否正在等待删除,所以我想给一个节点发信号,我怎么知道要发信号的线程,我是否必须跟踪所有最初在插入中的条件变量?
假设在某个删除时,我想向正在等待的线程 3 发出信号(以及其他 2 个),我该如何具体地向线程 3 发出信号?,线程 3 是否还记得他试图插入的内容?
在我的删除函数中,当我发出信号时,我不知道该线程等待的条件变量是什么,因为每个节点都有一个条件变量,并且可以有多个节点,每个节点都有一个条件变量等待。我知道广播所有人都会联系所有线程,但是没有那个我怎么能做到,并且特别表示一个线程最初想在树中插入一个值 5,但是由于 5 已经存在,它不能,并且知道那个5被删除了,应该插入5,但是随着5的等待,还有1,6,3,2在等待,所以我有5个条件变量,不知道哪个是5的。
这一切都在 C 中,使用 linux。