我有一个相当简单的D应用程序,它使用tkd(tcl)接口进行参数化,然后启动工作线程。工作线程定期将其进度传回UI,以便人们可以看到正在进行的操作。工作线程只是core.thread.Thread类的扩展。
有时,但是不可重复,我观察到如果我将焦点从启动应用程序的shell切换到其他东西,则工作线程似乎会阻塞。它一直被阻塞,直到我将焦点返回到shell(而不是GUI窗口)。事实上,它似乎无限期地被阻挡(即我可以回家,早上回来,它仍然被阻挡,并且在恢复对壳的重点后仍将恢复。)
我很好奇这是否可归因于D的线程实现中的某些内容,或者它是否可能是我对POSIX线程更普遍的误解。这是一个非常持久的问题。