gpt4 book ai didi

multithreading - 如果主线程不空闲,如何阻止其他线程使用“同步”?

转载 作者:行者123 更新时间:2023-12-03 19:30:53 25 4
gpt4 key购买 nike

我在主窗体(线程)中有一个TListView,还有许多其他线程使用Synchronize方法从列表中添加/删除项目。但是主线程还有一个修改列表项的方法,我希望该方法不会被想要在主线程中执行代码的其他线程打断。这可能吗 ?

最佳答案

您是否有证据表明您担心的事情正在发生?您不应该这样做,因为它不可能发生。那就是Synchronize的目的。在主线程中执行的方法必须先完成,然后主线程才能为消息队列提供服务以处理通过Synchronize从工作线程中调度的工作项,因此您不必担心。

当工作线程使用Synchronize时,它实际上只是向主线程发布一条消息,告诉它它有工作要做。如果主线程正忙于执行另一种方法,那么工作线程将简单地阻塞直到主线程完成,然后处理消息队列,拾取工作项,执行该工作项,然后将其回传给工作线程完成(使工作线程空闲,然后继续)。

当然,这假设您的主线程中的方法未调用Application.ProcessMessages()CheckSynchronize()(或者您正在使用执行此操作的棘手组件或类似的组件,而您不知道它->请参阅:Delphi 7, Windows 7, event handler, re-entrent code)

关于multithreading - 如果主线程不空闲,如何阻止其他线程使用“同步”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23952448/

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