Как работают барьеры-разрушители?

Как работает барьер разрушителя LMX? Я понимаю, как использовать Disruptor с DSL. Но я не смог найти хорошую ссылку о том, как работают барьеры или барьеры последовательности.

например Я нашел следующую ссылку, но не уверен, как использовать структуру данных барьера. http://mechanitis.blogspot.com/2011/08/dissecting-disruptor-why-its-so-fast.html

Например, new BatchEventProcessor() принимает SequenceBarrier. Почему? и как я могу создать его.


person srinath_perera    schedule 26.06.2013    source источник
comment
Надеюсь, это поможет, на самом деле они концептуально связаны, но находятся на очень разных уровнях стека.   -  person jasonk    schedule 27.06.2013


Ответы (1)


Во-первых, барьер памяти - это примитив архитектуры процессора; SequenceBarrier — это класс реализации в Disruptor. Я попытаюсь охватить оба.

Барьер памяти - позволяет программному обеспечению давать аппаратным средствам инструкции о том, что все инструкции до определенной точки X должны быть завершены до того, как X. Это используется, потому что процессоры обеспечивают оптимизацию выполнения не по порядку. Для получения более подробной информации лучше всего прочитать этот документ — см. Барьеры памяти : аппаратное представление для хакеров программного обеспечения.

SequenceBarrier — это класс реализации в Disruptor; вообще говоря, это часть Disruptor, и вам не нужно будет использовать его вне Disruptor. На самом деле он выполняет концептуально ту же функцию, что и барьер памяти — он не позволяет потребителям опережать издателя в кольцевом буфере. См. - SequenceBarrier на github. .

person jasonk    schedule 26.06.2013