Два разных потока в рамках одного процесса могут совместно использовать общую ячейку памяти путем чтения и/или записи на нее.
Обычно такое (преднамеренное) совместное использование реализуется с использованием атомных операций с использованием префикса lock
на x86, который имеет довольно известные издержки как для самого префикса lock
(т.е. для необоснованной стоимости), так и для дополнительной когерентности затраты, когда линия кэша фактически разделена (true или false).
Здесь меня интересуют произведенные потребительские расходы, когда один поток P
записывается в ячейку памяти, а другой поток `C читается из памяти, используя как обычные чтения, так и записи.
Какова задержка и пропускная способность такой операции при выполнении на отдельных ядрах в одном и том же сокете и в сравнении при выполнении гиперссылок на одном и том же физическом ядре на последних ядрах x86.
В заголовке я использую термин "гипер-братья и сестры" для обозначения двух потоков, работающих на двух логических потоках одного и того же ядра, и межядерных братьев и сестер, чтобы ссылаться на более обычный случай двух потоков, работающих на различные физические ядра.