Что происходит, когда два потока обрабатываются двумя процессорами, пытающимися получить доступ к одному ресурсу в куче одновременно? - PullRequest
0 голосов
/ 12 июня 2019

Что происходит, когда два отдельных потока обрабатываются двумя процессорами, одновременно обращаясь к одному и тому же свойству в куче. Ошибка или нет?

1 Ответ

1 голос
/ 13 июня 2019

Все это происходит на уровне микроэлектроники. По сути, кеш-подсистемы в двух процессорах должны договариваться друг с другом, чтобы решить, какая из них имеет самую последнюю копию ресурса, или извлечь ее из DRAM того процессора, который имеет ее. На архитектурах Intel это происходит в межчиповой сети, называемой QPI, на архитектурах AMD это Hypertransport (теперь может иметь более новое имя). В основном обе архитектуры являются NUMA - DRAM не доступен напрямую всем процессорам - но QPI / Hypertransport синтезирует архитектуру SMP, делая вид, что весь DRAM напрямую доступен всем процессорам. Это то, что испытывает ваша программа / ОС, когда она работает.

QPI и Hypertransport довольно сложны и невидимы для программного обеспечения.

...