我正在 mac os 上开发多线程应用程序。我面临下一个问题:当我尝试使用 xcode-cocoa 应用程序进行调试时(注意:控制台应用程序没有相同的问题),我的线程在下一次调用中返回错误:kevent()、semaphore_wait() , semaphore_timedwait() 与 EINTR(用于 kevent)和 KERN_ABORTED(用于 semaphore_*)。我认为这是由于 lldb 的工作。
问题是:我无法调试我的应用程序,因为我在收到此类事件后崩溃了。如果我会做他们的处理(只是回忆相同的功能),那么我的应用程序工作非常奇怪。无论如何,当我的 semaphore_timedwait() 中断时,我不能(我可以,但它非常难看)对这种情况做出很好的处理,因为我应该在我去 timedwait() 以使新的 timedwait() 正确之前“记住”时间。
因此,我的问题的解决方案是,如果我可以禁用当前线程“中断” - 从另一个线程\进程中断的能力,如果 lldb 将发送一些信号,我的函数将不会返回。在mac os上可以吗?