История изменений
Исправление a--, (текущая версия) :
Еще нужно будет защититься от ситуаций, когда на одну миллисекунду может выпасть разу несколько таймеров.
Это да, я прозевал, нужен ordered_multimap, но внутри там все равно то же дерево.
Если таймеров много, то эффективнее будет timer_wheel, правда ценой гранулярности таймера
Если мы подсунем нашему контейнеру (ordered_multimap) другой оператор сравнения таймеров, который будет выдавать равенство таймеров для приблизительно равных времен срабатывания, то получим timer_wheel, не?
Причем можно попробовать обнаглеть и менять точность сравнения таймеров прямо на ходу (в зависимости от их количества например). Тут подумать надо, сломается ли что от этого внутри дерева — мне кажется что нет. Вообще это было бы полезное свойство дерева.
Исправление a--, :
Еще нужно будет защититься от ситуаций, когда на одну миллисекунду может выпасть разу несколько таймеров.
Это да, я прозевал, нужен ordered_multimap, но внутри там все равно то же дерево.
Если таймеров много, то эффективнее будет timer_wheel,
Если мы подсунем нашему контейнеру (ordered_multimap) другой оператор сравнения таймеров, который будет выдавать равенство таймеров для приблизительно равных времен срабатывания, то получим timer_wheel, не?
Причем можно попробовать обнаглеть и менять точность сравнения таймеров прямо на ходу (в зависимости от их количества например). Тут подумать надо, сломается ли что от этого внутри дерева — мне кажется что нет. Вообще это было бы полезное свойство дерева.
Исправление a--, :
Еще нужно будет защититься от ситуаций, когда на одну миллисекунду может выпасть разу несколько таймеров.
Это да, я прозевал, нужен ordered_multimap, но внутри там все равно то же дерево.
Если таймеров много, то эффективнее будет timer_wheel,
Если мы перегрузим оператор сравнения таймеров, и он будет выдавать равенство таймеров для приблизительно равных времен срабатывания, то получим timer_wheel, не?
Причем можно попробовать обнаглеть и менять точность сравнения таймеров прямо на ходу (в зависимости от их количества например). Тут подумать надо, сломается ли что от этого внутри дерева — мне кажется что нет. Вообще это было бы полезное свойство дерева.
Исправление a--, :
Еще нужно будет защититься от ситуаций, когда на одну миллисекунду может выпасть разу несколько таймеров.
Это да, я прозевал, нужен ordered_multimap, но внутри там все равно то же дерево.
Если таймеров много, то эффективнее будет timer_wheel,
Если мы перегрузим оператор сравнения таймеров, и он будет выдавать равенство таймеров для приблизительно равных времен срабатывания, то получим timer_wheel, не?
Причем можно попробовать обнаглеть и менять точность сравнения таймеров прямо на ходу... тут подумать надо, сломается ли что от этого, кажется что нет.
Исходная версия a--, :
Еще нужно будет защититься от ситуаций, когда на одну миллисекунду может выпасть разу несколько таймеров.
Это да, я прозевал, нужен ordered_multimap, но внутри там все равно то же дерево.
Если таймеров много, то эффективнее будет timer_wheel,
Если мы перегрузим оператор сравнения таймеров, и он будет выдавать равенство таймеров для приблизительно равных времен срабатывания, то получим timer_wheel, не?
Причем можно обнаглеть и менять точность на ходу?