История изменений
Исправление alysnix, (текущая версия) :
В managed языках можно, конечно. Там по сути и так есть и цикл, обрабатывающий фреймы/кванты твоего кода, и флаги.
быть не может. невозможно корректным образом автоматически «разбить» код на «целостные кванты» между которыми прерывание треда будет корректным. если открыли файл - его надо закрыть, пустили цикл - его надо как-то завершить, пустили дочерний тред - его надо как-то остановить или сообщить ему что отцовский прерывают и так далее. в том-то и дело, что только семантика самой функции или действий выполняемых тредом, определяют в каких точках эти действия могут быть прерваны, а в какие участки прерывать нельзя. потому это обязанность программиста эти точки выделять, и смотреть - не хотят ли тебя прервать, и если хотят - обеспечивать корректный выход из текущего контекста.
Исходная версия alysnix, :
В managed языках можно, конечно. Там по сути и так есть и цикл, обрабатывающий фреймы/кванты твоего кода, и флаги.
быть не может. невозможно корректным образом «разбить» код на «целостные кванты» между которыми прерывание треда будет корректным. если открыли файл - его надо закрыть, пустили цикл - его надо как-то завершить, пустили дочерний ред - его надо как-то остановить или сообщить ему что отцовский прерывают и так далее. в том-то и дело, что только семантика самой функции или действий выполняемых тредом, определяют в каких точках эти действия могут быть прерваны, а в какие участки прерывать нельзя. потому это обязанность программиста эти точки выделять, и смотреть - не хотят ли тебя прервать, и если хотят - обеспечивать корректный выход из текущего контекста.