Pytania otagowane jako semaphore

Semafor to prymityw synchronizacji, który śledzi, ile z ograniczonej liczby zasobów jest dostępnych.



14
Co to jest semafor?
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?


8
Czy w Javie jest Mutex?
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 …




5
Jak wybrać między Semaphore a SemaphoreSlim?
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?

6
CountDownLatch vs Semaphore
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(); …

7
Semafor - jaki jest pożytek z liczenia początkowego?
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 …

3
Musisz zrozumieć użycie SemaphoreSlim
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) { …
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.