Вопросы с тегом «semaphore»

Семафор - это примитив синхронизации, который отслеживает количество доступных ресурсов из ограниченного числа.



14
Что такое семафор?
Семафор - это концепция программирования, которая часто используется для решения многопоточных задач. Мой вопрос к сообществу: Что такое семафор и как вы его используете?


8
Есть ли мьютекс в Java?
Есть ли объект Mutex в Java или способ его создать? Я спрашиваю, потому что объект Semaphore, инициализированный с 1 разрешением, мне не помогает. Подумайте об этом случае: try { semaphore.acquire(); //do stuff semaphore.release(); } catch (Exception e) { semaphore.release(); } если исключение происходит при первом запросе, освобождение в блоке catch …




5
Как выбрать между Semaphore и SemaphoreSlim?
Их общедоступные интерфейсы кажутся похожими. В документации указано, что SemaphoreSlim является облегченной альтернативой и не использует семафоры ядра Windows. Этот ресурс утверждает, что SemaphoreSlim намного быстрее. В каких ситуациях SemaphoreSlim имеет больше смысла по сравнению с Semaphore и наоборот?

6
CountDownLatch против семафора
Есть ли преимущество в использовании 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(); …

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.