Запитання з тегом «semaphore»

Семафор - це примітив синхронізації, який відстежує, скільки з обмеженої кількості ресурсів доступно.



14
Що таке семафор?
Семафор - це концепція програмування, яка часто використовується для вирішення завдань із багатопотоковою ниткою. Моє запитання до громади: Що таке семафор і як ним користуватися?



8
Чи є Mutex на Java?
Чи є об'єкт Mutex в Java або спосіб створити його? Я прошу, тому що об'єкт Semaphore, ініціалізований з 1 дозволом, не допомагає мені. Подумайте про цей випадок: try { semaphore.acquire(); //do stuff semaphore.release(); } catch (Exception e) { semaphore.release(); } якщо виняток трапляється при першому придбанні, вивільнення в блоці вилову …



5
Як вибрати між Semaphore та SemaphoreSlim?
Їх публічний інтерфейс виглядає схожим. У документації зазначено, що SemaphoreSlim є легкою альтернативою і не використовує семафори Windows Kernel. Цей ресурс зазначає, що SemaphoreSlim набагато швидше. У яких ситуаціях SemaphoreSlim має більше сенсу над Семафором і навпаки?

6
CountDownLatch проти Semaphore
Чи є якась перевага використання java.util.concurrent.CountdownLatch замість java.util.concurrent.Semaphore ? Наскільки я можу сказати, наступні фрагменти майже еквівалентні: 1. Семафор final Semaphore sem = new Semaphore(0); for (int i = 0; i < num_threads; ++ i) { Thread t = new Thread() { public void run() { try { doStuff(); } …

7
Семафор - для чого корисний початковий підрахунок?
http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspx Щоб створити семафор, мені потрібно вказати початковий та максимальний рахунок. MSDN стверджує, що початковий відлік - Початкова кількість запитів на семафор, які можуть бути надані одночасно. Хоча там зазначено, що максимальна кількість - Максимальна кількість запитів на семафор, які можуть бути надані одночасно. Я розумію, що максимальна кількість - …

3
Потрібно зрозуміти використання SemaphoreSlim
Ось код, який я маю, але я не розумію, що SemaphoreSlimробиться. 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 != …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.