Сколько времени нужно для запуска событий?Если времени больше, чем совсем нет, сон между каждым из них будет означать, что события не будут выполняться каждые x
секунд, где x
- время, в течение которого вы спите.Например, если событие занимает 1,2 секунды, а вы спите в течение 1,7, оно будет запускаться каждые 2,9 секунды.Колебание времени, которое требуется, затруднит определение времени запуска каждого события.
Вы можете противодействовать этому, либо измерив время, которое вы взяли, и вычтя его из времени ожидания (1.7 - 1.2 = 0.5
, поэтомуВы спите в течение 0,5 секунд), или используя три потока: один для запуска события A, один для запуска события B и один для определения времени.Вы можете создать поток для каждого события, которое завершается после его завершения, или у вас может быть один или несколько постоянных потоков, которые принимают задания для запуска.Первый вариант означает, что вам не нужно беспокоиться о параллелизме (потому что параллелизм сложен).
Если есть вероятность, что события займут больше времени, чем вы ожидаете, вы должны убедиться, что вы не 't запустить событие A снова, пока оно еще выполняется с предыдущей итерации.Если вы используете одну нить и спите, об этом позаботятся за вас.Если вы пойдете по маршруту нескольких потоков, вы можете избежать этого, создав очередь и поместив в нее задания, но тогда вам нужно убедиться, что вы не создадите массивную очередь дублирующихся заданий, что можно сделать одним из следующих способов:не ставить в очередь задание, если оно уже находится в очереди, или перезаписывать существующие задания для того же события (в зависимости от того, должны ли более поздние задания превосходить предыдущие).