2011-10-19 3 views
1

Например, у меня есть поисковые операции, которые выполняются одновременно. Первый, который находит совпадение, должен запустить задачу обновления, которая поставляет совпадения с gui. Я хочу гарантировать, что программа обновления запускается только один раз, но я хочу сделать это таким образом, чтобы добавить минимальные накладные расходы к поисковым операциям.в какао, что является хорошим способом гарантировать, что блок или задача будут выполняться только один раз?

Редактировать: если возможно, я хочу сделать это в macruby, который в настоящее время не имеет сопоставления для dispatch_once.

ответ

1

Вы хотите использовать dispatch_once

+0

Спасибо. К сожалению, это не реализовано в macruby (и не планируется реализовать), поэтому я его не нашел. Возможно, я могу сделать класс obj-c, чтобы сделать только эту часть. –

0

Я не знаю MacRuby, но, может быть, вы можете думать о глобальном флаге. Используйте мьютексы, чтобы гарантировать, что только один поток может получить доступ к переменной. Перед вызовом обновления каждый поток должен проверять переменную. Если он ложный, он устанавливает переменную в true и вызывает обновление, иначе просто продолжите.

 Смежные вопросы

  • Нет связанных вопросов^_^