shad-go/batcher
2021-03-30 18:52:54 +03:00
..
slow batcher: try fixing submissions by adding empty source file to slow subpkg. 2020-03-27 15:01:57 +03:00
batcher.go Add batcher task 2020-02-15 02:04:08 +03:00
batcher_race_test.go Disable batcher test under racedetector 2021-03-05 14:54:57 +03:00
batcher_test.go Disable batcher test under racedetector 2021-03-05 14:54:57 +03:00
README.md Update README.md 2021-03-30 18:52:54 +03:00

batcher

*slow.Value - это аналог atomic.Value, с двумя ограничениями:

  • Вызов Load() всегда занимает не меньше 1ms
  • Нельзя делать больше одного вызова Load() в один момент времени.

Реализуйте *Batcher, который оборачивает *slow.Value и ускоряет чтения за счёт батчинга.

Например, если 1000 горутин одновременно сделают вызов (*Batcher).Load(), то можно прочитать значение один раз и раздать всем ожидающим горутинам. Это будет в 1000 раз быстрее, чем вызвать (*slow.Value).Load() напрямую в каждой горутине.

Ваша реализация не должна создавать stale read. То есть, Load() всегда должен возвращать значение не старее последнего Store() на момент начала вызова Load().