Сделайте 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 заблокировать / приостановить на некоторое время, но немедленно отпустить при необходимости (например, пользователь хочет отменить операцию)?

0 ответов

Другие вопросы по тегам