Многоядерные: одновременный доступ к общей памяти - PullRequest
0 голосов
/ 29 марта 2012

Существуют ли правила одновременного доступа к разделяемой памяти в многоядерных системах? Если одно ядро ​​записывает общую память, другое ядро ​​читает ту же память в одно и то же время, есть ли проблемы с этим? Должен ли такой сценарий избегаться?

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Это называется условием гонки, и результат такого кода будет непредсказуемым.Вы должны избегать этого.Вы можете либо:

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

Как сказал @DanDan, только чтение из нескольких потоков не является проблемой.

0 голосов
/ 29 марта 2012

Да, вам нужно избегать этого.Единственное, что вы можете сделать безопасно с многоядерными и многопоточными системами, - это читать одновременно - и только если это не имеет побочных эффектов.

...