Что такое реентерабельная функция?
большинствонаtheвремени, определение reentrance цитируется из Википедия:
компьютерная программа или подпрограмма
описывается как реентерабельный, если это возможно
безопасное позвонил еще раз перед его
предыдущий вызов был завершен
(т. е. он может быть безопасно выполнен
одновременно.) Чтобы быть реентерабельным, а
компьютерная программа или рутина:
- не должно содержать статических (или глобальных)
непостоянные данные.
- не должен возвращать адрес
статические (или глобальные) непостоянные
данные.
- должен работать только на предоставленных данных
к нему по звонку.
- не должны полагаться на замки для синглтона
ресурсы.
- не должен изменять свой собственный код (если только
выполнение в собственном уникальном потоке
хранение)
- не должна вызывать нереентерабельные компьютер
программы или подпрограммы.
Как безопасное определен?
Если программа может быть безопасно выполняются одновременно, всегда ли это означает, что он реентерабелен?
Что именно является общим потоком между упомянутыми шестью пунктами, которые я должен иметь в виду при проверке моего кода на реентерабельные возможности?
и
- Are все рекурсивные функции реентерабельны?
- все ли потокобезопасные функции реентерабельны?
- все ли рекурсивные и потокобезопасные функции реентерабельны?
при написании этого вопроса, одна вещь приходит на ум:
Такие термины, как reentrance и потокобезопасность абсолютные вообще, т. е. имеют ли они фиксированные конкретные определения? Ибо, если их нет, то этот вопрос не очень значим.
Comments