Ядро Linux использует блокировку ; addl $ 0,0 (%% esp)
как барьер записи, тогда как библиотека RE2 использует xchgl (% 0),% 0
как барьер записи. В чем разница и что лучше?
Требует ли x86 также инструкций чтения барьеров? RE2 определяет свою функцию барьера чтения как запретную операцию на x86, в то время как Linux определяет ее как lfence
или как запретную операцию в зависимости от того, доступен ли SSE2. Когда требуется lfence
?