Большинство , определение reentrance приведено в Wikipedia:
Компьютерная программа или подпрограмма описанный как повторный, если он может быть безопасно снова вызван предыдущий вызов завершен (то есть его можно безопасно выполнить одновременно). Чтобы быть реентерабельной, компьютерная программа или подпрограмма:
- Не должно содержать статических (или глобальных) непостоянные данные.
- Нельзя вернуть адрес статическая (или глобальная) непостоянная данные.
- Должен работать только по предоставленным данным к нему вызывающим.
- Нельзя полагаться на блокировки для singleton Ресурсы.
- Не следует изменять собственный код (кроме выполняя свою собственную уникальную нить хранилище)
- Нельзя вызывать нерентабельный компьютер программ или подпрограмм.
Как безопасно безопасно?
Если программа может быть безопасно выполнена одновременно, всегда ли она означает, что она реентерабельна?
Что такое общий поток между шестью указанными точками, о которых я должен помнить, проверяя мой код на возможности повторного входа?
Кроме того,
- Все рекурсивные функции реентерабельны?
- Все ли потокобезопасные функции реентерабельны?
- Рекурсивные и потокобезопасные функции реентерабельны?
При написании этого вопроса приходит в голову следующее: Являются ли такие термины как reentrance и безопасностью потоков абсолютными, т.е. Имеют ли они конкретные конкретные определения? Ибо, если это не так, этот вопрос не имеет особого значения.