Многопоточная симуляция перекрёстка на C++. Автомобили въезжают с четырёх сторон, планировщик распределяет их по воркерам, воркеры проводят машины через секторы перекрёстка.
Generator → SPSCQueue[4] → Scheduler → Worker[4] → CrossRoads
- Generator — генерирует автомобили и кладёт в очередь соответствующей дороги
- Scheduler — читает очереди по round-robin, запускает воркеры
- Worker — проводит автомобиль через секторы перекрёстка в отдельном потоке
- CrossRoads — 4 сектора, каждый защищён мьютексом
Lock-free очередь на связном списке с dummy node.
Каждый из 4 секторов перекрёстка защищён отдельным мьютексом. Воркер захватывает секторы по маршруту по одному