Основной способ повышения производительности программного обеспечения в современных многопроцессорных системах заключается в разделении задачи между несколькими потоками. Производительность многопоточных программных систем, в свою очередь, зависит от скорости синхронизации и обмена данными между потоками. Традиционные методы синхронизации и обмена данными между потоками используют блокирующие примитивы синхронизации, такие как мьютексы, семафоры и критические секции. Основные недостатки этого подхода, приводящие к потере производительности, отмечены в [1]. В данной статье предлагается метод решения одной часто возникающей задачи – создание безблокировочной очереди сообщений, с несколькими потоками, отправляющими сообщения, и одним потоком-читателем сообщений.
Читать дальше...