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