MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Может ли поток упасть без обрушения процесса?"
Answer 1152176
В С++, с точки зрения стандарта, нет понятия "падает или зависает" - перечисленные состояния приводят к неопределенному поведению. Например, для деления на ноль это описано в разделе 8.6 Multiplicative operators, пункт 4:
If the second operand of / or % is zero the behavior is undefined.
Неопределенное поведение означает, что стандарт не накладывает ограничений на поведение программы, и реализация не обязана его документировать. В случае целочисленного деления на ноль, однако, поведение в большинстве реализаций хорошо известно: вся программа аварийно завершается при попытке деления на ноль в любом потоке. Более того, в Windows известны также используемые при этом коды SEH-исключений, что позволяет отреагировать на эту ситуацию и продолжить выполнение программы, в том числе и в том же потоке. Как это сделать, описано здесь: Перехват исключения при делении на 0
То же самое применимо к большинству других ошибочных ситуаций, кроме состояния гонки, так как оно обычно приводит не к аварийному завершению, а просто к считыванию/записи плохих данных. То есть на "Может ли поток упасть без обрушения процесса?" ответ - "теоретически да, смотря что понимать под падением". Но на практике стоит рассчитывать на то, что такие ошибки приведут к аварийному завершению всего процесса.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.