Ваш алгоритм неполон и немного отсутствует, в обоих ваших потоках вы утверждаете, что, хотя один из них верен, выполняйте функцию.
Ну, чем они заканчиваются?Когда они становятся ложными?Добавьте что-то, что вы хотите сделать, что приведет к завершению первого потока, потому что если поток 1 не прерывается, а функция 1 прерывается, то он просто вызывает функцию AGAIN и продолжает цикл до тех пор, пока вы не прервете программу.
Функции могут ломаться сами по себе, но вам НУЖНО сделать что-то, чтобы завершить потоки.
Например, если я создал цикл for внутри вашего потока, пока он был истинным, и поместил обе функции внутри цикла for, а затем заставил цикл for проходить до тех пор, пока целое число не достигнет 9999, функция должна просто завершитьсяи нить должна заканчиваться, верно?Нет.
он снова вызывает цикл for и продолжает заставлять ваш плохой компьютер считать 9999, пока вы не завершите его.
Всегда создавать конечный протокол.