цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Реентерабельность потоков, гонки потоков



Реентерабельность потоков, гонки потоков

Автор: Mike(admin) от 20-03-2019, 07:55

Реентерабельность потоков


Существует важный класс безопасных по потокам функций, называемых реентерабельными, характеризующихся тем свойством, что они не запрашивают никаких совместно используемых данных при вызове потоками.


Несмотря на то, что термины «безопасная по потокам» и «реентерабельная» иногда используются как синонимы, между ними существует четкое разделение технического плана, которое следует учитывать.


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


Возможно ли изучить код какой-либо функции и заранее объявить ее реентерабельной? К сожалению, это зависит от разных факторов. Если все аргументы функции передаются значением, а все обращения к данным относятся к локальным автоматическим переменным стека, тогда такая функция называется явно реентерабельной в том смысле, что ее реентерабельность можно подтвердить независимо от способа обращения к ней.


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


Гонки потоков


Феномен гонки имеет место, когда корректность программы зависит от одного потока, достигающего точки х в его управляющей логике до того, как другой поток достигнет точки у. Гонки обычно происходят из-за того, что программисты предполагают выбор потоками каких-то особых траекторий в пространстве выполнения состояния, забывая правило, гласящее, что поточные программы должны работать корректно по любой вероятной траектории.




© digitrode.ru




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий