В настоящее время я портирую библиотеку Windows C ++ на MacOS в качестве хобби-проекта для обучения. Я наткнулся на некоторый код, используя функции Win Interlocked *, и, таким образом, я пытался прочитать эту тему в целом.
Читая связанные вопросы здесь, в SO, я понимаю, что существуют разные способы выполнения этих операций в зависимости от ОС. Взаимосвязанный * в Windows, OSAtomic * в MacOS, и я также обнаружил, что компиляторы имеют встроенные (встроенные) операции для этого.
После прочтения gcc доступа к встроенной атомарной памяти мне остается задаться вопросом В чем разница между встроенной и OSAtomic * или блокированной *? между OSAtomic * или встроенным gcc, если я использую gcc на MacOS? То же самое, если бы я был в Windows, используя gcc.
Я также читал, что в Windows Interlocked * имеются как встроенные, так и встроенные версии. Что следует учитывать при выборе встроенного или встроенного?
В общем, есть ли в ОС несколько вариантов того, что использовать? Или это опять "зависит"? Если так, от чего это зависит?
Спасибо!