Есть ли способ выполнить целую атомарную функцию target-c?
Насколько я знаю, использование synchronized защищает только определенную часть кода от одновременного выполнения в нескольких потоках.Но я хочу, чтобы ВСЕ другие потоки не делали НИЧЕГО, пока я выполняю функцию.
В Руководство по программированию потоков содержится множество информации.В нем, в частности, упоминается, что нужно избегать синхронизации (что забавно, потому что иногда вы не можете), но они предлагают несколько советов по этой проблеме.
У вас будут серьезные проблемы с вашим дизайном, если вы начнете запускать программное обеспечение на многоядерном компьютере.Это ОЧЕНЬ дорогая операция, чтобы остановить запуск всех ядер для запуска вашего кода.Мьютексы, семафоры, события цикла выполнения и атомарные операции - вот путь.
Неа. Не могу этого сделать.
Или, ну, вы, вероятно, могли бы, если бы вы достаточно глубоко погрузились в API Маха (в любом случае, в Mac OS X).
Но ты не должен этого делать.
Почему вы думаете, что хотите это сделать?