Внутренняя реализацияatomic_cas_64() в Solaris на Sparc?

StackOverflow https://stackoverflow.com/questions/1264768

  •  13-09-2019
  •  | 
  •  

Вопрос

В 64-битной версии Solaris на Sparc реализован ли вызов функцииatomic_cas_64() с использованием load-link/condition-store?

Если нет, то что, если Solaris предлагает какой-либо API для кода C пользовательского режима для использования ll/sc?

Это было полезно?

Решение

Sparc64 - единственный среди современных процессоров - не реализует ни CAS двойной ширины, ни LL/SC.Таким образом, реализация кода без блокировки является проблематичной.Решения есть, но это решения проблемы (ABA), которой нет на других платформах из-за поддержки CAS или LL/SC.Более того, из-за этого ограничения в Sparce невозможно реализовать ряд алгоритмов без блокировки.

Другие советы

Вы могли бы взглянуть на СПАРК и SPARCv9 реализации, чтобы увидеть, что именно они делают...вам следует взглянуть на функции membar_* (в тех же файлах), чтобы увидеть, что вы можете сделать, чтобы получить более надежные гарантии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top