«Событие управляется» означает, что приложение «сидит там», ожидая событий, чтобы управлять тем, что происходит дальше. Типичными событиями являются различные формы деятельности мыши или клавиатуры.
Напротив, «процесс, управляемый» (часто «процедурное программирование») просто означает, что есть программа, «наблюдающая» за вещами, постоянно всхлипывающая все, что она должна делать.
МОЖЕТ МОЖЕТЕ МОЖЕТ МОЖЕТЕ ОБЕСПЕЧИТЬ оба в то же время, но это «расширенное упражнение» - или, по крайней мере, некоторые думают так.
Теперь большая проблема условий гонки - это действительно вопрос о том, что может произойти. С базами данных, вот прекрасный пример: если вы закодируете свой статус ошибки возврата в глобальном переменном, и есть ЛЮБОЕ временное совпадение между действиями в вашем коде (часто происходит в средах, управляемых событиями, но может происходить и в чисто процедурном программировании тоже) может получить неправильное сообщение об ошибке. Представьте себе, если поток, который сделал что-то, произошел с ошибкой, а более быстрый поток не имел ошибки, но более быстрый поток появился после этого и установил статус для успеха; есть условие, которое избегало бы «потокобезопасное» программирование. Это лишь один пример «состояния гонки».
До тех пор, пока действия каждого потока не являются независимыми, у вас нет условий гонки в каждом случае - все зависит от логики приложения и его потребностей - и никто здесь не может сказать вам, какими они могут быть, только разработчик ! ... Это система бронирования авиабилетов? ...