0

我正在检查循环内的某些条件,如果满足该条件,那么我想启动一个新线程。

在我进行更新的线程中,该更新将对下一次迭代的条件产生影响。

我担心的是线程在下一次迭代之前不会完成(例如更新数据库或调用远程资源),并且在下一次迭代中,条件仍将评估相同,因此在启动更新之前将运行两个或更多线程。

我不能有任何计时器/等待或类似的东西。循环必须持续且瞬时地运行。

我正在考虑的一个解决方案是在线程内更新一个标志,并且条件检查这个相同的标志,直到线程完成。

感谢您的任何反馈或建议。

4

2 回答 2

0

不要使用线程 - 线程同步操作。

您需要同步行为:在主线程中执行更新。

于 2013-05-26T03:28:05.507 回答
0

不太确定你想做什么,但听起来你有一个巨大的事件循环。作为其中的一部分,当 State == X 时,您会生成一个子进程。然后孩子设置 State = Y,然后你继续用 Y 做一些事情。在产生一个孩子之后,你想等到 State = Y,同时仍然执行循环的其余部分。听起来对吗?

在这种情况下,只需在生成子项时设置一个标志,并且仅在未设置该标志时生成子项。

编辑 您需要在主线程中设置标志,而不是按照您的建议在子线程中设置。您无法保证子线程在主线程返回循环之前执行任何操作。

于 2013-05-26T03:28:32.087 回答