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

Operacje atomowe

0 głosów
813 wizyt
pytanie zadane 16 sierpnia 2022 w C i C++ przez RufinB Bywalec (2,020 p.)
edycja 16 sierpnia 2022 przez RufinB
W podręczniku do c++ przeczytałem że  powodem dla którego zmienna atomic nie może mieć konstruktora kopiującego jest fakt że "operacja na dwóch różnych zmiennych nie może być atomowa" więc jak może istnieć compare_exchange_weak jako operacja atomowa skoro działa niemal identycznie jak hipoteczny konstruktor kopiujący
komentarz 16 sierpnia 2022 przez adrian17 Mentor (354,880 p.)

zmienna atomic nie może mieć konstruktora kopiującego

Klasa przechowywana w atomic<> nie może mieć nietrywialnego konstruktora kopiującego.

więc jak może istnieć compare_exchange_weak jako operacja atomowa skoro działa niemal identycznie jak hipoteczny konstruktor kopiujący

TBH nie wiem co przez to masz na myśli.

1 odpowiedź

0 głosów
odpowiedź 16 sierpnia 2022 przez j23 Mędrzec (195,220 p.)
edycja 16 sierpnia 2022 przez j23
 
Najlepsza

Generalnie chodzi o to, że operacje atomowe realizowane są na bardzo niskim poziomie (instrukcji procesora), a tam nie ma czegoś takiego jak klasy, nie ten poziom abstrakcji. Tam są bajty, słowa, podwójne słowa itd. Dlatego std::atomic wymaga, by typ T był Trivially Copyable, czyli przy kopiowaniu był traktowany jak ciąg bajtów, a nie zbiór pól, które trzeba jakoś specjalnie kopiować wykorzystując zdefiniowane przez nie operatory kopiowania.

komentarz 16 sierpnia 2022 przez RufinB Bywalec (2,020 p.)
A czy jest możliwe aby operacje atomowe wykonywane na dwóch różnych zmiennych atowowych w dwóch różnych wątkach (każdy wątek pracuje na własnej zmiennej atomowej) były wykonywane równocześnie
komentarz 16 sierpnia 2022 przez j23 Mędrzec (195,220 p.)
Tak (pod warunkiem, że każdy wątek śmiga na oddzielnym rdzeniu).
komentarz 16 sierpnia 2022 przez RufinB Bywalec (2,020 p.)
Dzięki

Podobne pytania

0 głosów
1 odpowiedź 691 wizyt
+1 głos
1 odpowiedź 928 wizyt
pytanie zadane 30 stycznia 2018 w C i C++ przez Treners Początkujący (310 p.)
0 głosów
1 odpowiedź 224 wizyt

93,631 zapytań

142,552 odpowiedzi

323,056 komentarzy

63,137 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2416p. - dia-Chann
  2. 2390p. - DziarnowskiJ
  3. 2317p. - raydeal
  4. 2300p. - Adrian Wieprzkowicz
  5. 2243p. - rucin93
  6. 2242p. - Łukasz Piwowar
  7. 2222p. - CC PL
  8. 2117p. - Łukasz Eckert
  9. 2082p. - Michal Drewniak
  10. 1957p. - Maurycy W
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1377p. - ssynowiec
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...