Я пробовал тоже. Работет, Но ! Надо понимать (и там четко написано это) что если у тебя несколько источников(продюсеров сообщений) независимых то на выходе из очереди сообщения не всегда будут в том порядке в какойм они были запушены в очередь (однако гарантируется порядок относительно отдельного продюсера).
Конечно.Чем больше ядер, тем больше всё тормозит.В конечном итоге CPI вырастает до сотен и тысяч, а 90% времени все процессоры проводят в функции InterlockedIncrement/Decrement и в ожидании доступа к памяти.
Offopic, но мне кажется lock-free is overrated.Хорошие locks довольно быстрые, например современные стандартные C++ вполне годные. Они не сильно медленнее тех memory barriers, на которых работают эти lock free штуки.Если consumer делает хоть что-то с полученными данными, а не просто их игнорирует, разницы с lock-free мне кажется не будет даже на big iron, потому что на NUMA, memory barriers пропорционально дорожают.
Локфри не всегда ради скорости, и вообще ради скорости надо бенчмаркать, а не просто брать локфри магию в надежде на чудо.Вот я часто сталкиваюсь с тем что треды с локами и форки друг с другом дружат не прямо хорошо.Или, если идет речь о работе через шаредмемори.
Comments