Я пишу обертку ssh в объекте-c, я пытаюсь реализовать maxTime, которую должна выполнить команда для выполнения. Как я реализовать это:Как прояснить поток в заданное время в объекте-c
Главная Тема:
- высчитывает таймаут
- создать asyncThread (очередь НОД), чтобы выполнить команду и анализировать полученные данные
- waitForTimeoutOrSignal
- возвращаемый результат
AsyncThread:
- выполнить команду
- получить возвращаемые данные
- если получил правильный сигнал данных MainThread
В C# я имел хороший успех, используя ManualResetEvents сигнализировать MainThread. В Objective-C ближайший класс, который я могу найти, это NSCondition, но кажется, что он не построен для межпоточной связи.
На самом деле я получаю:
2012-05-22 00: 31: 05,761 libssh2-для-прошивкой [60821: 11303] ** - [NSCondition разблокировки]: условие («(нуль) «) отпирается нити, которая не запирала его
2012-05-22 00: 31: 05,763 libssh2-для-прошивки [60821: 11303] ** Перерыв на _NSLockError() для отладки.
, когда я пытаюсь его использовать. Есть ли другой способ использовать NSCondition или лучший способ для потока спать, пока он не получит какой-то сигнал?
Есть около 20 способов (хорошо, может быть, преувеличение, но полдюжины), чтобы отправить событие таймера какого-то типа в поток. Но самое главное знать, что основной поток никогда не должен ждать. –