![]() |
1
1
你不能100%肯定,就像你不能在任何非实时系统。如果mainthread挂起,它将不会检查主循环中的消息或其他事件。这是正常的。 您唯一能做的就是避免在维护线程中执行可能需要很长时间的操作。准确判断什么是必要的,什么是不必要的,这是行业的诀窍。一些面向实时的人将所有文件系统访问权转移到线程上,并严格为用户界面保留GUI,这是因为如果用户为此或另一个在网络共享上配置路径,那么共享问题很容易导致长时间的超时等待,甚至几分钟。 如果我看application.queueasyncCall,我看不到线程安全处理(没有锁定或锁定的队列),所以这个队列是不存在的。 我知道Lazarus在某种程度上在非Windows上模拟了postmessage,我检查了实现,它确实有锁,所以我假设它是多线程安全的。 |