Переносимый атомарный своп c ++ (Windows - GNU / Linux - MacOSX) - PullRequest
5 голосов
/ 23 февраля 2010

Есть ли в наличии бесплатная портативная (Windows, GNU / Linux & MacOSX) библиотека, обеспечивающая функция атомной замены без блокировки ?

Если нет, то как бы это было реализовано для каждой из этих платформ? (x86 с VC ++ или g ++)

Спасибо

Ответы [ 3 ]

2 голосов
/ 23 февраля 2010

Есть библиотека без блокировки , ожидающая рассмотрения в boost . Кроме того, если вы покопаетесь в библиотеке boost smart pointers , вы найдете атомарные операции для нескольких платформ. Еще один - Intel Threading Building Blocks имеет реализацию шаблона atomic<>.

1 голос
/ 23 февраля 2010

Boost имеет набор макросов для упрощения операций без блокировки в переносном режиме.

1 голос
/ 23 февраля 2010

Зависит от того, что вы хотите поменять. В ассемблере для x86 вы можете получить «почти» атомарный своп xor, иначе я бы выбрал какое-то решение, использующее блокировку, которое будет отличаться в Win32 / {Linux, Darwin}.

Если вы ищете библиотеку, взгляните на APR (Apache Portable Runtime) - http://apr.apache.org/

...