в какао, что является хорошим способом гарантировать, что блок или задача будет выполняться только один раз? - PullRequest
1 голос
/ 19 октября 2011

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

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

Ответы [ 2 ]

1 голос
/ 19 октября 2011

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

0 голосов
/ 19 октября 2011

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

...