• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Operacje atomowe

Object Storage Arubacloud
+1 głos
808 wizyt
pytanie zadane 30 stycznia 2018 w C i C++ przez Treners Początkujący (310 p.)
W prostych słowach, czy ktoś może mi wyjaśnić różnicę pomiędzy operacjami atomowymi compare_exchange_strong() i compare_exchange_weak() ?

1 odpowiedź

+2 głosów
odpowiedź 30 stycznia 2018 przez mokrowski Mędrzec (155,460 p.)
wybrane 31 stycznia 2018
 
Najlepsza
Na niektórych platformach sprzętowych, trudno uzyskać dostęp do zasobu na wyłączność (czego wymaga wersja _strong()). Wtedy można rozważyć użycie wersji _weak() która zapewni porównanie do oczekiwanej wartości i jej nadpisanie ale nie da gwarancji wymiany danych z nową wartością. Do takich sytuacji może dochodzić w przypadku próby dostępu do danych np. na innym CPU lub w cache niedostępnym dla danej jednostki wykonawczej.

Nie wiem czy takie wyjaśnienie Ci wystarczy ale typy atomowe i lock_free programming to dość złożone zagadnienie :-)
komentarz 31 stycznia 2018 przez Treners Początkujący (310 p.)
Czyli o ile mam gwarancję pracy na danych w ramach swojego wątku i nie interesuje mnie konieczność publikacji zmienionej wartości dla innych wątków, wersja weak() wystarczy? Czy lepiej użyć strong() i ew. barier pamięciowych?
komentarz 1 lutego 2018 przez mokrowski Mędrzec (155,460 p.)
Raczej nie w ramach _strong() czy _weak() powinieneś wybierać... Zapoznaj się z barierami pamięciowymi. W większości przypadków wystarczy typ atomowy, operacje store/load/fetch oraz dodanie barier w tych operacjach. Operacje exchange_, będą celowe gdy będziesz chciał tworzyć spinlock lub szybciej działające struktury powiadomień działające w kontekście zbliżonym do zmiennych decyzyjnych.

Trochę trudno cokolwiek radzić jeśli nie przybliżysz problemu. Na tak dużym poziomie ogólności, trochę teoretyzuję czego nie lubię. Pokaż kod swojego problemu to będę mógł się do tego jakość odnieść... :-)

Podobne pytania

0 głosów
1 odpowiedź 296 wizyt
pytanie zadane 16 sierpnia 2022 w C i C++ przez RufinB Obywatel (1,830 p.)
0 głosów
1 odpowiedź 111 wizyt
pytanie zadane 5 grudnia 2023 w C i C++ przez hutsalo1998 Użytkownik (520 p.)
0 głosów
0 odpowiedzi 197 wizyt
pytanie zadane 25 stycznia 2023 w C i C++ przez hicodyn Początkujący (420 p.)

92,551 zapytań

141,400 odpowiedzi

319,531 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...