Мне нужен способ узнать, когда цикл событий начался и когда он собирается завершиться. Я пытаюсь выполнить синхронизацию между потоками, и трудно решить условие состязания, связанное с isRunning
в моменты, когда цикл начинается и когда он выходит.
Я полагаю, что для начала я могу просто опубликовать событие, так как оно будет поставлено в очередь и отправлено после его запуска. Но для выхода я не уверен, как справиться с этим. Мне нужно какое-то событие, которое произойдет незадолго до завершения цикла.
Есть ли способ сделать это?
Мне нужна эта причина для публикации событий в ветке. У меня есть функция, в частности функция очистки, скажем, cleanupObject
. Эта функция может быть вызвана из любого потока, и ожидается, что она выполнит очистку объекта. Эти объекты принадлежат потоку с циклом событий. Если этот цикл событий выполняется, этот запрос cleanupObject
должен обрабатываться как событие в этом цикле событий. Если цикл обработки событий не выполняется, очистка должна выполняться по-другому (это происходит во время завершения работы).
Гонка существует, потому что isRunning
не имеет никакой синхронизации, которую я могу использовать, поэтому, хотя она сказала «истина», когда я ее вызвал, она может больше не работать сразу после этого. Мне нужно знать, будет ли обработано событие, которое я публикую в цикле, потому что, если оно не будет обработано, я должен выполнить очистку другим способом.