LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

Не в этом причина, они могут иметь сложные переходы, но главное что бы весь процесс был виден компилятору на момент создания main_thread_job.

Виден компилятору = легко трассируется. С чем ты споришь? И да, это условие (невозможность легко трассировать) указано в старте темы.

Не спрятать, а вынести туда где компилятор не может сделать проверку на изменение flag.

Вынести туда где компилятор не видит = спрятать. Опять непонятно с чем спор.

Неужели ты не допускаешь возможности ситуации, когда весь код одного треда содержится в одном .c файле?

Допускаю, конечно, но тема про другой случай. С «тредом в одном файле» мне и так всё ясно, я про него не спрашивал.

Ты убираешь UB этим, если мыслить в рамках одного потка.

А вот это и есть суть вопроса, но мне интересно теоретическое обоснование с позиции строгих UB-проверок. То, что компилятор в итоге генерирует хороший код, и так понятно.

Исходная версия firkax, :

Не в этом причина, они могут иметь сложные переходы, но главное что бы весь процесс был виден компилятору на момент создания main_thread_job.

Виден компилятору = легко трассируется. С чем ты споришь? И да, это условие (невозможность легко трассировать) указано в старте темы.

Не спрятать, а вынести туда где компилятор не может сделать проверку на изменение flag.

Вынести туда где компилятор не видит = спрятать. Опять непонятно с чем спор.

Неужели ты не допускаешь возможности ситуации, когда весь код одного треда содержится в одном .c файле?

Допускаю, конечно, но тема про другой случай. С «тредом в одном файле» мне и так всё ясно, я про него не спрашивал.