Package org.jruby.ext.fiber
Class ThreadFiber
java.lang.Object
org.jruby.RubyBasicObject
org.jruby.RubyObject
org.jruby.ext.fiber.ThreadFiber
- All Implemented Interfaces:
Serializable,Cloneable,Comparable<IRubyObject>,InstanceVariables,InternalVariables,IRubyObject,ExecutionContext,CoreObjectType
- See Also:
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class org.jruby.RubyObject
RubyObject.DataNested classes/interfaces inherited from class org.jruby.RubyBasicObject
RubyBasicObject.Finalizer -
Field Summary
FieldsModifier and TypeFieldDescription(package private) ThreadFiber.FiberDataprivate static final Logger(package private) RubyThreadFields inherited from class org.jruby.RubyObject
IVAR_INSPECTING_OBJECT_ALLOCATOR, OBJECT_ALLOCATOR, REIFYING_OBJECT_ALLOCATORFields inherited from class org.jruby.RubyBasicObject
ALL_F, BASICOBJECT_ALLOCATOR, COMPARE_BY_IDENTITY_F, ERR_INSECURE_SET_INST_VAR, FALSE_F, FL_USHIFT, flags, FROZEN_F, IS_OVERLAID_F, metaClass, NEVER, NIL_F, REFINED_MODULE_F, STAMP_OFFSET, TAINTED_F, UNDEF, UNTRUST_F, USER0_F, USER1_F, USER2_F, USER3_F, USER4_F, USER5_F, USER6_F, USER7_F, USER8_F, USER9_F, USERA_F, VAR_TABLE_OFFSET, varTable, varTableStampFields inherited from interface org.jruby.runtime.builtin.IRubyObject
NULL_ARRAY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription__alive__(ThreadContext context) static IRubyObject__current__(ThreadContext context, IRubyObject recv) __finalize__(ThreadContext context) __transfer__(ThreadContext context, IRubyObject[] values) (package private) final booleanalive()(package private) static RubyThreadcreateThread(Ruby runtime, ThreadFiber.FiberData data, FiberQueue queue, Block block) private voidprivate static IRubyObjectexchangeWithFiber(ThreadContext context, ThreadFiber.FiberData currentFiberData, ThreadFiber.FiberData targetFiberData, IRubyObject val) protected voidfinalize()getData()private static voidhandleExceptionDuringExchange(ThreadContext context, ThreadFiber.FiberData currentFiberData, ThreadFiber.FiberData targetFiberData, RaiseException re) Handle exceptions raised while exchanging data with a fiber.initialize(ThreadContext context, Block block) static voidinitRootFiber(ThreadContext context, RubyThread currentThread) resume(ThreadContext context, IRubyObject[] values) private static ThreadFiber.FiberDataverifyCurrentFiber(ThreadContext context, Ruby runtime) static IRubyObjectyield(ThreadContext context, IRubyObject recv) static IRubyObjectyield(ThreadContext context, IRubyObject recv, IRubyObject value) static IRubyObjectyield(ThreadContext context, IRubyObject recv, IRubyObject[] value) Methods inherited from class org.jruby.RubyObject
attachToObjectSpace, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, callInit, convertToType, createObjectClass, dig, dig1, dig2, eqlInternal, equalInternal, equals, getNativeClassIndex, hashCode, inspect, op_eqq, puts, specificEval, toRubyString, toStringMethods inherited from class org.jruby.RubyBasicObject
addFinalizer, anyToString, asJavaString, asString, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callMethod, callSuper, checkArrayType, checkCallMethod, checkCallMethod, checkFrozen, checkStringType, checkStringType19, compareTo, convertToArray, convertToFloat, convertToHash, convertToInteger, convertToInteger, convertToInteger, convertToString, copyInstanceVariablesInto, copySpecialInstanceVariables, createBasicObjectClass, dataGetStruct, dataGetStructChecked, dataWrapStruct, decode, display, dup, ensureInstanceVariablesSettable, eql, eql_p, equal_p, equal_p19, evalUnder, extend, fastGetInstanceVariable, fastGetInternalVariable, fastHasInstanceVariable, fastHasInternalVariable, fastSetInstanceVariable, fastSetInternalVariable, freeze, frozen_p, getFFIHandle, getFlag, getInstanceEvalClass, getInstanceVariable, getInstanceVariableList, getInstanceVariableNameList, getInstanceVariables, getInternalVariable, getInternalVariables, getJavaClass, getMetaClass, getMetaClass, getNativeHandle, getNativeTypeIndex, getObjectId, getRuntime, getSingletonClass, getSingletonClassClone, getSingletonClassCloneAndAttach, getType, getVariable, getVariableCount, getVariableList, getVariableNameList, hash, hashyInspect, hasInstanceVariable, hasInstanceVariables, hasInternalVariable, hasVariables, id, infectBy, initialize, initialize_copy, initialize19, inspect, inspectHashCode, instance_eval, instance_eval, instance_eval, instance_eval, instance_eval19, instance_eval19, instance_eval19, instance_eval19, instance_exec, instance_exec19, instance_of_p, instance_variable_defined_p, instance_variable_get, instance_variable_set, instance_variables, instance_variables19, isBuiltin, isClass, isFalse, isFrozen, isImmediate, isModule, isNil, isSpecialConst, isSpecialObject, isTaint, isTrue, isUntrusted, kind_of_p, makeMetaClass, method, method_missing, method_missing19, method19, methods, methods, methods19, nil_p, nonFixnumHashCode, OBJ_INIT_COPY, objInitCopy, op_cmp, op_equal, op_equal_19, op_match, op_match19, op_not, op_not_equal, op_not_match, private_methods, private_methods19, protected_methods, protected_methods19, public_methods, public_methods19, rbClone, rbClone, rbInspect, remove_instance_variable, removeFinalizers, removeInstanceVariable, removeInternalVariable, respond_to_p, respond_to_p, respond_to_p19, respond_to_p19, respondsTo, respondsToMissing, respondsToMissing, send, send, send, send, send, send19, send19, send19, send19, setFFIHandle, setFlag, setFrozen, setInstanceVariable, setInternalVariable, setMetaClass, setNativeHandle, setTaint, setUntrusted, setVariable, singleton_method, singleton_method_added, singleton_method_added19, singleton_method_removed, singleton_method_removed19, singleton_method_undefined, singleton_method_undefined19, singleton_methods, specificEval, specificEval, specificEval, specificEval, syncVariables, syncVariables, taint, taint, tainted_p, testFrozen, testFrozen, to_a, to_a, to_s, toJava, trust, type, type_deprecated, untaint, untrust, untrusted_p, validateInstanceVariable, validateInstanceVariable, validateInstanceVariable, variableTableContains, variableTableFastContains, variableTableFastFetch, variableTableFastStore, variableTableFetch, variableTableRemove, variableTableStore, variableTableSync, yieldUnder, yieldUnder
-
Field Details
-
LOG
-
data
-
thread
-
-
Constructor Details
-
ThreadFiber
-
-
Method Details
-
initRootFiber
-
initialize
-
resume
-
exchangeWithFiber
private static IRubyObject exchangeWithFiber(ThreadContext context, ThreadFiber.FiberData currentFiberData, ThreadFiber.FiberData targetFiberData, IRubyObject val) -
handleExceptionDuringExchange
private static void handleExceptionDuringExchange(ThreadContext context, ThreadFiber.FiberData currentFiberData, ThreadFiber.FiberData targetFiberData, RaiseException re) Handle exceptions raised while exchanging data with a fiber. The rules work like this:- If the thread has called Fiber#resume on the fiber and an interrupt is sent to the thread, forward it to the fiber
- If the fiber has called Fiber.yield and an interrupt is sent to the fiber (e.g. Timeout.timeout(x) { Fiber.yield }) forward it to the fiber's parent thread.
- Parameters:
context-currentFiberData-targetFiberData-re-
-
__transfer__
-
yield
-
yield
-
yield
-
verifyCurrentFiber
-
__alive__
-
__current__
-
getContextVariables
- Specified by:
getContextVariablesin interfaceExecutionContext
-
alive
final boolean alive() -
createThread
static RubyThread createThread(Ruby runtime, ThreadFiber.FiberData data, FiberQueue queue, Block block) -
__finalize__
-
doFinalize
private void doFinalize() -
finalize
-
getData
-
getThread
-