Semaphore.Acquire 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| Acquire() |
從此信號量取得許可,阻塞直到有許可可用,或執行緒被 Thread#interrupt 中斷。 |
| Acquire(Int32) |
從此信號量取得指定數量的許可,阻塞直到所有可用或執行緒被 Thread#interrupt 中斷。 |
Acquire()
從此信號量取得許可,阻塞直到有許可可用,或執行緒被 Thread#interrupt 中斷。
[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
- 屬性
例外狀況
如果目前執行緒被中斷
備註
從此信號量取得許可,阻塞直到有許可可用,或執行緒被 Thread#interrupt 中斷。
若有許可證,取得並立即返回,減少一張許可證。
若無許可可用,則當前執行緒因執行緒排程而停用,並處於休眠狀態,直到以下兩種情況之一發生:<ul<>li>其他執行緒#release呼叫該信號量的方法,當前執行緒接著被指派許可;或 <li>其他執行緒 Thread#interrupt 中斷當前執行緒。
</ul>
如果目前執行緒<:ul<>li>在進入此方法時已設定中斷狀態;或 <li>在等待許可期間被 Thread#interrupted 中斷,<則InterruptedException會拋出 /ul>,當前執行緒的中斷狀態會被清除。
的 java.util.concurrent.Semaphore.acquire()Java 檔。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
Acquire(Int32)
從此信號量取得指定數量的許可,阻塞直到所有可用或執行緒被 Thread#interrupt 中斷。
[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
需取得許可證數量
- 屬性
例外狀況
如果目前執行緒被中斷
若為 permits 負
備註
從此信號量取得指定數量的許可,阻塞直到所有可用或執行緒被 Thread#interrupt 中斷。
取得指定數量的許可證(若有),並立即返回,減少可用許可證數量。 此方法與迴路 for (int i = 0; i < permits; ++i) acquire(); 相同,但原子層次一次性取得所有許可:
若許可不足,則當前執行緒將被停用以進行執行緒排程,並處於休眠狀態,直到以下兩種情況之一發生:<ul<>li>某執行緒呼叫#release() release該信號量的方法,當前執行緒接著被分配許可,且可用許可數量符合此請求;或 <li>其他執行緒 Thread#interrupt 中斷當前執行緒。
</ul>
如果目前執行緒<:ul<>li>在進入此方法時已設定中斷狀態;或 <li>在等待許可期間被 Thread#interrupted 中斷,<則InterruptedException會拋出 /ul>,當前執行緒的中斷狀態會被清除。 原本應指派給此執行緒的許可,反而會被分配給其他執行緒,試圖取得許可,就像許可是透過呼叫 #release()。
的 java.util.concurrent.Semaphore.acquire(int)Java 檔。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。