本文簡要介紹ruby語言中 Thread.pending_interrupt?
的用法。
用法
pending_interrupt?(error = nil) → true/false
返回異步隊列是否為空。
由於 Thread::handle_interrupt
可以用來延遲異步事件,所以這個方法可以用來判斷是否有任何延遲事件。
如果您發現此方法返回 true,那麽您可以完成 :never
塊。
例如,以下方法立即處理延遲的異步事件。
def Thread.kick_interrupt_immediately
Thread.handle_interrupt(Object => :immediate) {
Thread.pass
}
end
如果給出error
,則僅檢查error
類型的延遲事件。
用法
th = Thread.new{ Thread.handle_interrupt(RuntimeError => :on_blocking){ while true ... # reach safe point to invoke interrupt if Thread.pending_interrupt? Thread.handle_interrupt(Object => :immediate){} end ... end } } ... th.raise # stop thread
這個例子也可以寫成下麵這樣,你應該使用它來避免異步中斷。
flag = true th = Thread.new{ Thread.handle_interrupt(RuntimeError => :on_blocking){ while true ... # reach safe point to invoke interrupt break if flag == false ... end } } ... flag = false # stop thread
相關用法
- Ruby Thread.priority=用法及代碼示例
- Ruby Thread.priority用法及代碼示例
- Ruby Thread.kill用法及代碼示例
- Ruby Thread.report_on_exception用法及代碼示例
- Ruby Thread.group用法及代碼示例
- Ruby Thread.list用法及代碼示例
- Ruby Thread.ignore_deadlock =用法及代碼示例
- Ruby Thread.stop用法及代碼示例
- Ruby Thread.abort_on_exception=用法及代碼示例
- Ruby Thread.stop?用法及代碼示例
- Ruby Thread.new用法及代碼示例
- Ruby Thread.report_on_exception=用法及代碼示例
- Ruby Thread.value用法及代碼示例
- Ruby Thread.run用法及代碼示例
- Ruby Thread.thread_variables用法及代碼示例
- Ruby Thread.thread_variable?用法及代碼示例
- Ruby Thread.thr[sym]用法及代碼示例
- Ruby Thread.thread_variable_get用法及代碼示例
- Ruby Thread.status用法及代碼示例
- Ruby Thread.key?用法及代碼示例
- Ruby Thread.keys用法及代碼示例
- Ruby Thread.alive?用法及代碼示例
- Ruby Thread.handle_interrupt用法及代碼示例
- Ruby Thread.raise用法及代碼示例
- Ruby Thread.current用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Thread.pending_interrupt?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。