Язык

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 и используемых в соответствии с условиями, описанными в разделе "".

Применяется к