Сделайте NSOperation работать медленнее, чтобы использовать меньше ресурсов процессора
Мой поток в настоящее время выполняется с помощью NSThread. В моем случае у меня есть (очень) большие вычисления, и я растягиваю их в течение длительного периода (например, 5 минут). Цель здесь - использовать только около 2% процессорного времени. Поскольку расчет данных является линейным, и у меня есть семафор NSLock, я использую это:
// block this task until time has elapsed or an exit signal is received.
if ([[self lock] lockWhenCondition:kConditionThreadMustExit beforeDate:[self blockUntil]])
[[self lock] unlock];
Метод blockUntil проверяет, сколько времени прошло и сколько работы было выполнено, и блокирует соответственно.
Я хочу перенести вещи в NSOperation.
Как я могу заставить и NSOperation заблокировать / приостановить на некоторое время, но немедленно отпустить при необходимости (например, пользователь хочет отменить операцию)?