Я разрабатываю многопоточное приложение для Mac OS. Я столкнулся со следующей проблемой: когда я пытаюсь выполнить отладку с помощью приложения xcode-cocoa (ПРИМЕЧАНИЕ: консольное приложение не имеет такой же проблемы), мои потоки возвращаются с ошибками при следующих вызовах: kevent(), semaphore_wait() , semaphore_timedwait() с EINTR (для kevent) и KERN_ABORTED (для semaphore_*). Я думаю, это связано с работой lldb.
Проблема в том, что я не могу отлаживать свое приложение, так как получаю такие события. Если я сделаю их обработку (просто вызову ту же функцию), то мое приложение будет работать очень странно. Во всяком случае, я не могу (я могу, но это очень некрасиво) сделать хорошую обработку для такой ситуации, когда мой semaphore_timedwait() прерывает, поскольку я должен «запоминать» время до того, как я пошел timedwait(), чтобы сделать новый timedwait() правильным.
Итак, решение моих проблем было бы, если бы я мог отключить для текущего потока «прерывание» - возможность быть прерванным из другого потока\процесса, что мои функции не будут возвращаться, если lldb отправит какой-то сигнал. Возможно ли это на mac os?