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