Skip to content
  • Koichi Sasada's avatar
    352a885a
    Thread specific storage APIs · 352a885a
    Koichi Sasada authored
    This patch introduces thread specific storage APIs
    for tools which use `rb_internal_thread_event_hook` APIs.
    
    * `rb_internal_thread_specific_key_create()` to create a tool specific
      thread local storage key and allocate the storage if not available.
    * `rb_internal_thread_specific_set()` sets a data to thread and tool
      specific storage.
    * `rb_internal_thread_specific_get()` gets a data in thread and tool
      specific storage.
    
    Note that `rb_internal_thread_specific_get|set(thread_val, key)`
    can be called without GVL and safe for async signal and safe for
    multi-threading (native threads). So you can call it in any internal
    thread event hooks. Further more you can call it from other native
    threads. Of course `thread_val` should be living while accessing the
    data from this function.
    
    Note that you should not forget to clean up the set data.
    352a885a
    Thread specific storage APIs
    Koichi Sasada authored
    This patch introduces thread specific storage APIs
    for tools which use `rb_internal_thread_event_hook` APIs.
    
    * `rb_internal_thread_specific_key_create()` to create a tool specific
      thread local storage key and allocate the storage if not available.
    * `rb_internal_thread_specific_set()` sets a data to thread and tool
      specific storage.
    * `rb_internal_thread_specific_get()` gets a data in thread and tool
      specific storage.
    
    Note that `rb_internal_thread_specific_get|set(thread_val, key)`
    can be called without GVL and safe for async signal and safe for
    multi-threading (native threads). So you can call it in any internal
    thread event hooks. Further more you can call it from other native
    threads. Of course `thread_val` should be living while accessing the
    data from this function.
    
    Note that you should not forget to clean up the set data.
Loading