本文简要介绍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?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。