我痛苦地发现,在多线程程序中,在一个线程中打开文件和设置“close on exec”位和在另一个线程中调用subprocess.Popen之间存在竞争风险-这可能会导致意外的句柄被传递给第二个孩子,在我看来,我需要用锁来保护这种访问(我知道从subprocess.Popen中关闭所有句柄是可能的,但这可能是过度杀伤力)。子进程将立即执行一个shell,但我不确定python线程锁在这种</
我觉得这个问题的核心与我所使用的特定语言和库无关,所以我使用了一些伪代码。我们可以假设C是一种语言和WinApi COM DLL。假设我使用的是一个动态链接的外部库,它在响应某些事件时公开了一些回调。库告诉我回调应该是非阻塞。现在,假设我想更新一个内部状态来响应这个事件。此内部状态由其他线程访问,因此由互斥保护。我看到的唯一解决方案是使用不同的线程更新状态,例如: