Я только что узнал, что gobject.timeout_add(delay, function)
и gobject.idle_add(function)
безопасны в использовании.Я попробовал это, используя
for i in range(X):
gobject.idle_add(workerFunction)
и обнаружил, что НИКОГДА не выполняются два рабочих потока одновременно.Это означает, что кажется, что вызовы функций, выполняемые gobject.timeout_add(delay, function)
и gobject.idle_add(function)
, являются атомарными в том смысле, что они выполняются всегда строго один за другим.Таким образом, даже простая проверка, опубликованная в вопросе, не является необходимой.
На самом деле я не мог заставить себя проявить какое-либо состояние гонки независимо от того, что я сделал.Таким образом, дополнительный механизм блокировки не требуется.