Semaphore.Acquire Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя. | Описание |
|---|---|
| Acquire() |
Получает разрешение от этого семафора, блокируя до тех пор, пока он не будет доступен, или поток прерван потоком#прерывания. |
| Acquire(Int32) |
Получает заданное количество разрешений из этого семафора, блокируя до тех пор, пока все не будут доступны, или поток прерывается потоком#прерывания. |
Acquire()
Получает разрешение от этого семафора, блокируя до тех пор, пока он не будет доступен, или поток прерван потоком#прерывания.
[Android.Runtime.Register("acquire", "()V", "GetAcquireHandler")]
public virtual void Acquire();
[<Android.Runtime.Register("acquire", "()V", "GetAcquireHandler")>]
abstract member Acquire : unit -> unit
override this.Acquire : unit -> unit
- Атрибуты
Исключения
Если текущий поток прерван
Комментарии
Получает разрешение от этого семафора, блокируя до тех пор, пока он не будет доступен, или поток прерван потоком#прерывания.
Получает разрешение, если он доступен и возвращается немедленно, уменьшая число доступных разрешений на один.
Если разрешение недоступно, текущий поток становится отключенным для целей планирования потоков и находится в состоянии спячки до тех пор, пока не произойдет одно из двух вещей: <ul<>li>Некоторый другой поток вызывает #release метод для этого семафора и текущий поток рядом с разрешением; или <ли>Некоторые другие потоки#прерывания прерывает текущий поток.
</ul>
Если текущий поток: <ul><li>имеет его прерванное состояние при входе в этот метод; или <ли>является Thread#прерывание при ожидании разрешения, </ul>InterruptedException затем возникает, а состояние прерывания текущего потока очищается.
Java документации по java.util.concurrent.Semaphore.acquire().
Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".
Применяется к
Acquire(Int32)
Получает заданное количество разрешений из этого семафора, блокируя до тех пор, пока все не будут доступны, или поток прерывается потоком#прерывания.
[Android.Runtime.Register("acquire", "(I)V", "GetAcquire_IHandler")]
public virtual void Acquire(int permits);
[<Android.Runtime.Register("acquire", "(I)V", "GetAcquire_IHandler")>]
abstract member Acquire : int -> unit
override this.Acquire : int -> unit
Параметры
- permits
- Int32
количество разрешений для получения
- Атрибуты
Исключения
Если текущий поток прерван
Значение
Комментарии
Получает заданное количество разрешений из этого семафора, блокируя до тех пор, пока все не будут доступны, или поток прерывается потоком#прерывания.
Получает указанное количество разрешений, если они доступны, и возвращает немедленно, уменьшая количество доступных разрешений по заданному количеству. Этот метод имеет тот же эффект, что и цикл for (int i = 0; i < permits; ++i) acquire(); , за исключением того, что он атомарно получает разрешения сразу:
Если недостаточно разрешений доступны, текущий поток становится отключенным для целей планирования потоков и находится в состоянии неактивности до тех пор, пока не произойдет одно из двух вещей: <ul<>li>Некоторый другой поток вызывает один из #release() release методов для этого семафора, и текущий поток рядом с разрешениями и число доступных разрешений удовлетворяет этому запросу; или <ли>Некоторые другие потоки#прерывания текущего потока прерывает текущий поток.
</ul>
Если текущий поток: <ul><li>имеет его прерванное состояние при входе в этот метод; или <ли>является Thread#прерывание при ожидании разрешения, </ul>InterruptedException затем возникает, а состояние прерывания текущего потока очищается. Все разрешения, которые должны были быть назначены этому потоку, вместо этого назначаются другим потокам, пытающимся получить разрешения, как будто разрешения были предоставлены вызовом #release().
Java документации по java.util.concurrent.Semaphore.acquire(int).
Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".