Powiedzmy, że klasa ma public int counterpole, do którego dostęp ma wiele wątków. Jest intto tylko zwiększane lub zmniejszane. Aby zwiększyć to pole, które podejście należy zastosować i dlaczego? lock(this.locker) this.counter++;, Interlocked.Increment(ref this.counter);, Zmień modyfikator dostępu counterna public volatile. Teraz, gdy odkryłem volatile, usunąłem wiele lockinstrukcji i ich użycie Interlocked. …
Rozumiem różnice między optymistycznym a pesymistycznym blokowaniem. Czy ktoś mógłby mi teraz wyjaśnić, kiedy używałbym jednego z nich w ogóle? I czy odpowiedź na to pytanie zmienia się w zależności od tego, czy do wykonania zapytania używam procedury składowanej? Ale tylko dla sprawdzenia, optymizm oznacza „nie blokuj stołu podczas czytania”, …
Widzę, że w przypadku używania obiektów, które nie są bezpieczne dla wątków, kod zamykamy w taki sposób: private static readonly Object obj = new Object(); lock (obj) { // thread unsafe code } Co dzieje się, gdy wiele wątków uzyskuje dostęp do tego samego kodu (załóżmy, że działa on w …
Dokumentacja MSDN tak mówi public class SomeObject { public void SomeOperation() { lock(this) { //Access instance variables } } } to „problem, jeśli instancja jest dostępna publicznie”. Zastanawiam się dlaczego? Czy to dlatego, że zamek będzie trzymany dłużej niż to konieczne? A może jest jakiś bardziej podstępny powód?
Widząc różne pytania związane z blokowaniem i (prawie) zawsze znajdując „pętlę z powodu fałszywych pobudek” 1 Zastanawiam się, czy ktoś doświadczył takiego rodzaju pobudki (na przykład zakładając przyzwoite środowisko sprzętowe / programowe)? Wiem, że termin „fałszywy” oznacza brak wyraźnego powodu, ale jakie mogą być przyczyny takiego zdarzenia? ( 1 Uwaga: …
Chyba prawdziwe pytanie brzmi: Jeśli nie przejmuję się brudnymi odczytami, dodanie wskazówki with (NOLOCK) do instrukcji SELECT wpłynie na wydajność: bieżąca instrukcja SELECT inne transakcje na podstawie podanej tabeli Przykład: Select * from aTable with (NOLOCK)
Jeśli mam 2 zsynchronizowane metody w tej samej klasie, ale każda ma dostęp do różnych zmiennych, czy 2 wątki mogą uzyskać dostęp do tych 2 metod jednocześnie? Czy blokada występuje na obiekcie, czy staje się tak specyficzna jak zmienne w zsynchronizowanej metodzie? Przykład: class X { private int a; private …
POSIX pozwala rekursywnym muteksom. Oznacza to, że ten sam wątek może dwa razy zablokować ten sam muteks i nie zablokuje się. Oczywiście musi również odblokować go dwa razy, w przeciwnym razie żaden inny wątek nie może uzyskać muteksu. Nie wszystkie systemy obsługujące pthreads również obsługują rekurencyjne muteksy, ale jeśli chcą …
Czy ktoś może wyjaśnić różnicę między: lock (someobject) {} Korzystanie z Mutex Korzystanie z semafora Korzystanie z monitora Korzystanie z innych klas synchronizacji .Net Po prostu nie mogę tego rozgryźć. Wydaje mi się, że pierwsze dwa są takie same?
Podczas pisania aplikacji wielowątkowych jednym z najczęściej występujących problemów są zakleszczenia. Moje pytania do społeczności to: Co to jest impas? Jak je wykrywasz? Czy sobie z nimi radzisz? I wreszcie, jak im zapobiegasz?
Mam następującą klasę. class Test{ public HashSet<string> Data = new HashSet<string>(); } Muszę zmienić pole „Dane” z różnych wątków, więc chciałbym poznać opinie na temat mojej obecnej implementacji bezpiecznej wątkowo. class Test{ public HashSet<string> Data = new HashSet<string>(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void Remove(string Val){ lock(Data) …
W języku niskiego poziomu (C, C ++ lub czymkolwiek): mam wybór pomiędzy posiadaniem kilku muteksów (takich jak to, co daje mi pthread lub cokolwiek zapewnia natywna biblioteka systemowa) lub jednym dla obiektu. Jak skuteczne jest blokowanie muteksu? Tj. Ile jest prawdopodobnych instrukcji asemblera i ile czasu one zajmują (w przypadku, …
C ++ 17 wprowadził nową klasę blokady o nazwie std::scoped_lock. Sądząc po dokumentacji, wygląda podobnie do już istniejącej std::lock_guardklasy. Jaka jest różnica i kiedy powinienem go używać?
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.