Wdrażam mechanizm blokujący za pomocą atomowych (podwójne) instrukcji porównania i wymiany, np. cmpxchg16bOperacje atomowe C++ dla struktur bez blokady
Obecnie piszę o tym w zestawie, a następnie łączę go. Zastanawiałem się jednak, czy istnieje sposób na automatyczne wykonanie kompilatora dla mnie? na przykład blok kodu źródłowego z "atomowym" i spraw, aby zorientował się, jak zaimplementować kod jako instrukcję atomową w podstawowej architekturze procesora (lub wygenerować błąd podczas kompilacji, jeśli bazowy łuk go nie obsługuje)?
P.S. Wiem, że ma pewne gcc Zabudowy (przynajmniej dla CAS)
http://gcc.gnu.org/onlinedocs/gcc-4.4.0/gcc/Atomic-Builtins.html#Atomic-Builtins
MSVC ma interlocked ops, a GCC ma wbudowane funkcje op-atomów, więc nie ma potrzeby wykonywania wbudowanego asemblera. Za pomocą obwolut kompilatora pozostaniesz przenośny na wszystkie platformy obsługiwane przez kompilator. – bdonlan
MSVC ma blokowane operacje tylko dla długich typów danych, czyli jednostek zależnych OP. – gbjbaanb
gcc nie ma wbudowanych opcji dla DWCAS. MSVC ma wbudowaną funkcję DWCAS. Żaden system operacyjny nie ma DW (podwójne słowo, np. Dwie długości wskaźnika, obok siebie) dla inkrementacji, dekrementacji itd. - DW istnieje tylko i istnieje tylko (i istnieje tylko dla CAS). –