Pytania otagowane jako thread-safety

Fragment kodu jest bezpieczny dla wątków, jeśli tylko manipuluje strukturami danych w sposób, który umożliwia spójne wykonywanie tego kodu przez wiele wątków. Kod może być bezpieczny wątkowo, warunkowo bezpieczny (wymagane wzajemne wykluczanie) lub niebezpieczny (może być bezpiecznie używany tylko przez jeden wątek).

16
Kolekcja została zmodyfikowana; Operacja wyliczenia może nie zostać wykonana
Nie mogę dotrzeć do sedna tego błędu, ponieważ kiedy dołączony jest debugger, wydaje się, że nie występuje. Poniżej znajduje się kod. To jest serwer WCF w usłudze Windows. Metoda NotifySubscribers jest wywoływana przez usługę za każdym razem, gdy występuje zdarzenie danych (w przypadkowych odstępach czasu, ale niezbyt często - około …


8
Jak dokładnie działa blokada?
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 …

3
Przypadki użycia dla harmonogramów RxJava
W RxJava dostępnych jest 5 różnych harmonogramów : natychmiastowe () : Tworzy i zwraca program planujący, który natychmiast wykonuje pracę w bieżącym wątku. trampoline () : Tworzy i zwraca program planujący, który kolejkuje pracę nad bieżącym wątkiem do wykonania po zakończeniu bieżącej pracy. newThread () : Tworzy i zwraca harmonogram, …

7
Czym dokładnie jest funkcja ponownego wysłania?
Większość z tych czasów , definicja reentrance jest cytat z Wikipedii : Program komputerowy lub procedurę określa się jako ponowne wysłanie, jeśli można bezpiecznie wywołać ją ponownie przed zakończeniem poprzedniego wywołania (tzn. Można bezpiecznie wykonać jednocześnie). Aby ponownie wysłać, program komputerowy lub procedurę: Nie może zawierać żadnych statycznych (ani globalnych) …


7
Queue.Queue vs. collections.deque
Potrzebuję kolejki, w której wiele wątków może umieszczać różne rzeczy, z których wiele wątków może czytać. Python ma co najmniej dwie klasy kolejek, Queue.Queue i collections.deque, przy czym ta pierwsza najwyraźniej wykorzystuje tę drugą wewnętrznie. Oba twierdzą, że są bezpieczne w wątku w dokumentacji. Jednak dokumenty kolejki również stwierdzają: collections.deque …

9
Automatyzacja wzorca kodu InvokeRequired
Uświadomiłem sobie boleśnie, jak często trzeba pisać następujący wzorzec kodu w kodzie GUI sterowanym zdarzeniami, gdzie private void DoGUISwitch() { // cruisin for a bruisin' through exception city object1.Visible = true; object2.Visible = false; } staje się: private void DoGUISwitch() { if (object1.InvokeRequired) { object1.Invoke(new MethodInvoker(() => { DoGUISwitch(); })); …

4
Co sprawia, że ​​metoda jest bezpieczna dla wątków? Jakie są zasady?
Czy istnieją ogólne zasady / wytyczne dotyczące tego, co sprawia, że ​​metoda jest bezpieczna dla wątków? Rozumiem, że prawdopodobnie jest milion jednorazowych sytuacji, ale co w ogóle? Czy to takie proste? Jeśli metoda uzyskuje dostęp tylko do zmiennych lokalnych, jest bezpieczna wątkowo. Czy to to? Czy dotyczy to również metod …
156 c#  thread-safety 

5
Czy iteracja wartości ConcurrentHashMap jest bezpieczna dla wątków?
W javadoc dla ConcurrentHashMap jest następujący: Operacje pobierania (w tym get) na ogół nie blokują się, więc mogą nakładać się na operacje aktualizacji (w tym operacje przesyłania i usuwania). Pobieranie odzwierciedla wyniki ostatnio zakończonych operacji aktualizacji, które miały miejsce w momencie ich rozpoczęcia. W przypadku operacji zagregowanych, takich jak putAll …

5
Concurrent HashSet <T> w .NET Framework?
Mam następującą klasę. class Test{ public HashSet&lt;string&gt; Data = new HashSet&lt;string&gt;(); } 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&lt;string&gt; Data = new HashSet&lt;string&gt;(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void Remove(string Val){ lock(Data) …


5
Czy niezsynchronizowane metody statyczne są bezpieczne wątkowo, jeśli nie modyfikują statycznych zmiennych klas?
Zastanawiałem się, czy masz metodę statyczną, która nie jest zsynchronizowana, ale nie modyfikuje żadnych zmiennych statycznych, czy jest bezpieczna wątkowo? A co jeśli metoda tworzy w niej zmienne lokalne? Na przykład, czy poniższy kod jest bezpieczny dla wątków? public static String[] makeStringArray( String a, String b ){ return new String[]{ …

8
Czy wątek! = Check jest bezpieczny?
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 …

4
Czy można używać instancji Gson jako pola statycznego w fasoli modelu (ponowne użycie)?
Oto model, który zaimplementowałem: public class LoginSession { private static final Gson gson = new Gson(); private String id; private String name; private long timestamp; public LoginSession(String id, String name) { this.id = id; this.name = name; this.timestamp = System.currentTimeMillis(); } public String toJson() { return gson.toJson(this); } public static …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.