Operacja atomowa jest niepodzielna. Termin ten jest używany między innymi do opisania transakcji w bazach danych, niskopoziomowych dostępów w programach wielowątkowych i operacji w systemie plików.
Co oznaczają atomici co nonatomicoznaczają deklaracje majątkowe? @property(nonatomic, retain) UITextField *userName; @property(atomic, retain) UITextField *userName; @property(retain) UITextField *userName; Jaka jest różnica operacyjna między tymi trzema?
Jak atomowy / lotny / zsynchronizowany działa wewnętrznie? Jaka jest różnica między następującymi blokami kodu? Kod 1 private int counter; public int getNextUniqueIndex() { return counter++; } Kod 2 private AtomicInteger counter; public int getNextUniqueIndex() { return counter.getAndIncrement(); } Kod 3 private volatile int counter; public int getNextUniqueIndex() { return …
W książce Effective Java napisano: Specyfikacja języka gwarantuje, że odczyt lub zapis zmiennej jest niepodzielny, chyba że zmienna jest typu longlub double[JLS, 17.4.7]. Co oznacza „atomowy” w kontekście programowania Java lub programowania w ogóle?
Rozumiem, że std::atomic<>jest to obiekt atomowy. Ale do jakiego stopnia atomowa? W moim rozumieniu operacja może być atomowa. Co dokładnie oznacza uczynienie obiektu atomowym? Na przykład, jeśli istnieją dwa wątki współbieżnie wykonujące następujący kod: a = a + 12; Czy zatem cała operacja (powiedzmy add_twelve_to(int)) jest atomowa? Czy też są …
Ogólnie rzecz biorąc, for int num, num++(lub ++num), jako operacja odczytu-modyfikacji-zapisu, nie jest atomowa . Ale często widzę kompilatory, na przykład GCC , generują dla niego następujący kod ( spróbuj tutaj ): Ponieważ wiersz 5, który odpowiada, num++jest jedną instrukcją, czy możemy wywnioskować, że w tym przypadku num++ jest atomowa …
Wiem, że operacje złożone, takie jak, i++nie są bezpieczne dla wątków, ponieważ obejmują wiele operacji. Ale czy sprawdzanie referencji z samym sobą jest operacją bezpieczną dla wątków? a != a //is this thread-safe Próbowałem to zaprogramować i używać wielu wątków, ale to się nie udało. Chyba nie mogłem zasymulować wyścigu …
Jeśli istnieją dwa wątki uzyskujące dostęp do zmiennej globalnej, wiele samouczków mówi, że zmienna jest ulotna, aby zapobiec buforowaniu zmiennej przez kompilator w rejestrze, a tym samym niepoprawnej aktualizacji. Jednak dwa wątki, które uzyskują dostęp do wspólnej zmiennej, są czymś, co wymaga ochrony przez mutex, prawda? Ale w takim przypadku …
Jaka jest różnica między metodami lazySeti ? Dokumentacji nie ma wiele do powiedzenia na temat :setAtomicIntegerlazySet Ostatecznie ustawia się na podaną wartość. Wydaje się, że przechowywana wartość nie zostanie natychmiast ustawiona na żądaną wartość, ale zamiast tego zostanie zaplanowana do ustawienia w przyszłości. Ale jakie jest praktyczne zastosowanie tej metody? …
Jaka jest różnica między atomową a krytyczną w OpenMP? mogę to zrobić #pragma omp atomic g_qCount++; ale to nie to samo co #pragma omp critical g_qCount++; ?
Ogólnie rzecz biorąc, co możemy przyjąć za pewnik, gdy dołączamy do pliku w systemie UNIX z wielu procesów? Czy można stracić dane (jeden proces nadpisuje zmiany drugiego)? Czy dane mogą zostać zniekształcone? (Na przykład, każdy proces dołącza po jednym wierszu do pliku dziennika, czy jest możliwe, że dwa wiersze ulegną …
Jaki jest koszt operacji atomowej (dowolnej z opcji porównania i zamiany lub atomowego dodawania / zmniejszania)? Ile cykli zużywa? Czy wstrzyma inne procesory na SMP lub NUMA, czy też zablokuje dostęp do pamięci? Czy opróżni bufor zmiany kolejności w niesprawnym procesorze? Jakie efekty pojawią się w pamięci podręcznej? Interesują mnie …
bool compare_exchange_weak (T& expected, T val, ..); compare_exchange_weak()jest jednym z prymitywów wymiany porównawczej udostępnionych w C ++ 11. Jest słaba w tym sensie, że zwraca fałsz, nawet jeśli wartość obiektu jest równa expected. Wynika to z fałszywej awarii na niektórych platformach, na których do zaimplementowania jest używana sekwencja instrukcji (zamiast …
Czy istnieje sposób ochrony przed równoczesnymi modyfikacjami tego samego wpisu w bazie danych przez dwóch lub więcej użytkowników? Dopuszczalne byłoby wyświetlenie komunikatu o błędzie użytkownikowi wykonującego drugą operację zatwierdzenia / zapisania, ale dane nie powinny być po cichu nadpisywane. Myślę, że blokowanie wpisu nie wchodzi w grę, ponieważ użytkownik może …
Chcę napisać przenośny kod (Intel, ARM, PowerPC ...), który rozwiązuje wariant klasycznego problemu: Initially: X=Y=0 Thread A: X=1 if(!Y){ do something } Thread B: Y=1 if(!X){ do something } w którym celem jest uniknięcie sytuacji, w której robią oba wątkisomething . (W porządku, jeśli żadna rzecz nie działa; nie jest …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.