Semafor to koncepcja programowania, która jest często używana do rozwiązywania problemów związanych z wielowątkowością. Moje pytanie do społeczności: Co to jest semafor i jak go używasz?
Czy istnieje obiekt Mutex w Javie lub sposób na jego utworzenie? Pytam, ponieważ obiekt Semaphore zainicjowany z 1 zezwoleniem mi nie pomaga. Pomyśl o tym przypadku: try { semaphore.acquire(); //do stuff semaphore.release(); } catch (Exception e) { semaphore.release(); } jeśli wyjątek wystąpi przy pierwszym pobraniu, zwolnienie w bloku catch zwiększy …
Ich publiczne interfejsy wyglądają podobnie. W dokumentacji stwierdza, że SemaphoreSlim to lekka alternatywa i nie używa semaforów jądra systemu Windows. Ten zasób stwierdza, że SemaphoreSlim jest znacznie szybszy. W jakich sytuacjach SemaphoreSlim ma większy sens niż Semaphore i odwrotnie?
Czy jest jakaś korzyść z używania java.util.concurrent.CountdownLatch zamiast java.util.concurrent.Semaphore ? O ile wiem, poniższe fragmenty są prawie równoważne: 1. Semafor final Semaphore sem = new Semaphore(0); for (int i = 0; i < num_threads; ++ i) { Thread t = new Thread() { public void run() { try { doStuff(); …
http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspx Aby utworzyć semafor, muszę podać liczbę początkową i maksymalną. MSDN stwierdza, że początkowa liczba to - Początkowa liczba żądań semafora, które mogą być przyznane jednocześnie. Chociaż stwierdza, że maksymalna liczba to Maksymalna liczba żądań semafora, które mogą być przyznane jednocześnie. Rozumiem, że maksymalna liczba to maksymalna liczba wątków, które …
Oto kod, który mam, ale nie rozumiem, co SemaphoreSlimrobi. async Task WorkerMainAsync() { SemaphoreSlim ss = new SemaphoreSlim(10); List<Task> trackedTasks = new List<Task>(); while (DoMore()) { await ss.WaitAsync(); trackedTasks.Add(Task.Run(() => { DoPollingThenWorkAsync(); ss.Release(); })); } await Task.WhenAll(trackedTasks); } void DoPollingThenWorkAsync() { var msg = Poll(); if (msg != null) { …
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.