никак
так если вы не хотите всё переделывать, и вас не волнует как этот код будет выглядеть и что будет думать следующий разработчик о вас, можно и про го ту вспомнить
Да переделывать все равно придется, просто срочно надо накостылять, а причесывать позже уже конечно буду. а что goto? откуда и куда?
ну тип не блокирующая проверка флага, и при наличии флага идти в начало цикла. но что-то мне больно такое писать\
Вставь несколько раз внутри задачи проверку на нажатие кнопки. А ля for(;;) { step1() ; if( restart() ) { clean_up() ; continue ; } step2() ; if( restart() ) { clean_up() ; continue ; } step3() ; }
там под полтыщщи строк. я застрелюсь добавлять во все процедуры проверку флага. Пока попробую с убиением задачи. Если прокатит - хорошо. и можно спокойно перепиливать.
если хорошо знаешь, как шедуллер работает, можно дескриптор задачи вручную почистить и из очереди ее удалить, но это, конечно, грязный хак
убить и запустить выглядит норм вариантом
В принципе можно ее засуспендить, она из очереди вылетит, спокойно подчистить ControlBlock, и потом дать ей Resume.. но в случае статической задачи не вижу принципиального отличия от terminate-create. да и даже если динамическая - скорее всего даже в то же место кучи лягут переменные.
При входе запомните указатель стека и потом используйте его. Но это кривые решение конечно. Проще goto использовать
Обсуждают сегодня