24.12.2014, 21:03
"такая хрень" она от клиента-сервера а не от интерпретатора скрипта же, потому и такая, к тому же там всё же одновременно и клиент и сервер и у того и другого минимум 2 потока - 1 чисто сеть, второй всякие долгие вещи обрабатывает чтоб сетевой не ждал их, вот и получается в итоге хрень с несколькими очередями, приоритетами в очереди и прочей веселухой ). Имхо в однопоточном скриптовом интерпретаторе что-то похожее скорее всего полезет по мере усложнения
Цитата:А в случае использования одного потока все тупо и элементарно: создать общую глобальную очередь с таймером и добавлять туда то, что надо выполнить, а в главном цикле просто делатьэто сработает только если очередь строится исключительно на времени, которое "скрипт" (в терминах ПЗшного скриптоязыка) должен спать и ничего не делать, в реальном скрипте там жеж вообще может не быть слипа а быть просто одно или несколько условий при котором тот или иной кусок скрипта выполняется т.е. цикл должен как минимум помимо отсчёта времени по всем спящим скриптам проверять условия для тех которые не спят, при этом скорее всего синхронизируясь с другим или другими потоками движка если движок больше чем в 1 потоке работает.
while (queue.getTop().timer == 0)
{
script.exec(queue.getTop().code);
queue.deQueue();
}
Gipat Group