Тест (и график) делался не для vblank а для time, с vblank у меня 100фпс и 10мс на кадр.
синхронизация в любом варианте делается из потока эмуляции, а нотификация происходит одинаково.
Нотификация через тред пул - мега тормоза, любые объекты синхронизации работают через диспетчер, минимальный квант диспетчера 1мс (это если timebeginperiod(1))
timebeginperiod(1) устанавливается. то что трид пул медленный, понятно. Тут дело в том что эта нотификация - узкое место, до этого она происходила через Invalidate, а в обработчике WM_PAINT Present, но это тормозит поток эмуляции при разных месиджах в очереди сообщений. Через трид пул я попробовал развязать, как простейший вариант. Результат удивил Даже не ожидал что настолько динамично все работать будет. Даже UI заметно шустрее стал