Как создать атомарную функцию в target-c - PullRequest
3 голосов
/ 29 июня 2010

Есть ли способ выполнить целую атомарную функцию target-c?

Насколько я знаю, использование synchronized защищает только определенную часть кода от одновременного выполнения в нескольких потоках.Но я хочу, чтобы ВСЕ другие потоки не делали НИЧЕГО, пока я выполняю функцию.

Ответы [ 2 ]

3 голосов
/ 29 июня 2010

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

У вас будут серьезные проблемы с вашим дизайном, если вы начнете запускать программное обеспечение на многоядерном компьютере.Это ОЧЕНЬ дорогая операция, чтобы остановить запуск всех ядер для запуска вашего кода.Мьютексы, семафоры, события цикла выполнения и атомарные операции - вот путь.

2 голосов
/ 29 июня 2010

Неа. Не могу этого сделать.

Или, ну, вы, вероятно, могли бы, если бы вы достаточно глубоко погрузились в API Маха (в любом случае, в Mac OS X).

Но ты не должен этого делать.

Почему вы думаете, что хотите это сделать?

...