разве внутренняя связь не должна помешать потокам войти в статические переменные друг друга?
Ваш вопрос помечен c .В языке программирования Си нет потоков.Если ваша программа создает какие-либо новые потоки, она делает это, вызывая некоторую библиотеку во время выполнения.Цепочка инструментов C не знает, что такое потоки, у нее нет никакого способа узнать, что вызываемые вами библиотечные процедуры создают потоки, и у нее нет никакого способа узнать, считаете ли вы какую-либо конкретную статическую переменную «принадлежащей» одному или другому потоку.thread.
Каждый поток в вашей программе работает в том же виртуальном адресном пространстве, что и любой другой поток.Каждый поток потенциально имеет доступ ко всем тем же переменным, к которым может обращаться любой другой поток.Если переменная в программе на самом деле используется более чем одним потоком, то ответственность программиста *1013* (не ответственность цепочки инструментов) лежит на том, чтобы потоки использовали ее безопасным образом..
Кажется, что каждый имеет что-то против локальных статических переменных,
Разработчики программного обеспечения, которые работают в командах для разработки больших, долговечных программных систем (подумайте, десятки лети от сотен тысяч до десятков миллионов строк кода) есть несколько очень хорошо понятных причин избегать использования статических переменных.Не каждый работает в подобных системах, но здесь вы встретите людей, которые делают.
люди, похоже, не могут согласиться с тем, почему
Не все программные системы необходимо обслуживать и обновлять в течение десятков лет, и не все имеют десятки миллионов строк кода.Это большой мир.Есть люди, которые пишут код по разным причинам.У них не все одинаковые потребности.
, и исследование некоторых аргументов показывает, что они непродуманны
Есть люди, которые пишут код для самых разныхпричины ... То, что кажется «непродуманной», чтобы вы могли бы быть то, что какой-либо другой группой разработчиков думали долго и упорно о.Возможно, вы не до конца понимаете их потребности.
Насколько я понимаю, существуют вполне законные варианты использования локальных статических переменных
Да.Вот почему они существуют.Язык программирования C, как и многие другие языки программирования, является общим инструментом, который можно использовать по-разному.