Feature #10134

[PATCH] thread_pthread: prefer native types/functions

Added by Eric Wong about 1 year ago. Updated about 1 year ago.

[ruby-core:64364]
Status:Closed
Priority:Normal
Assignee:Eric Wong

Description

This will make it easier for us to try alternative mutex/condvar
implementations while still using pthreads for thread management.
It may be worth trying alternative mutexes/condvars (e.g. based on
atomics + futexes) if they can be significantly cheaper/faster.

I'll commit in a few days unless there's a good reason for exposing
pthread_* in more places than we need.

thread_native.patch Magnifier (6.13 KB) Eric Wong, 08/14/2014 09:15 PM

Associated revisions

Revision 47185
Added by normal about 1 year ago

thread_pthread: prefer rb_nativethread* types/functions

This will make it easier for us to try alternative mutex/condvar
implementations while still using pthreads for thread management.
[Feature #10134]

  • thread_pthread.h: define RB_NATIVETHREAD_LOCK_INIT and
    RB_NATIVETHREAD_COND_INIT macros

  • thread_pthread.c (native_mutex_lock, native_mutex_unlock,
    native_mutex_trylock, native_mutex_initialize,
    native_mutex_destroy, native_cond_wait):
    use rb_nativethread_lock_t instead of pthread_mutex_t

  • thread_pthread.c (native_mutex_debug): make argument type-agnostic
    to avoid later cast.

  • thread_pthread.c (register_cached_thread_and_wait):
    replace PTHREAD_COND_INITIALIZER with RB_NATIVETHREAD_COND_INIT,
    use native_mutex_{lock,unlock}

  • thread_pthread.c (use_cached_thread):
    use native_mutex_{lock,unlock}

  • thread_pthread.c (native_sleep):
    use rb_nativethread_lock_t to match th->interrupt_lock,
    use native_mutex_{lock,unlock}

  • thread_pthread.c (timer_thread_lock): use rb_nativethread_lock_t type

Revision 47185
Added by normal about 1 year ago

thread_pthread: prefer rb_nativethread* types/functions

This will make it easier for us to try alternative mutex/condvar
implementations while still using pthreads for thread management.
[Feature #10134]

  • thread_pthread.h: define RB_NATIVETHREAD_LOCK_INIT and
    RB_NATIVETHREAD_COND_INIT macros

  • thread_pthread.c (native_mutex_lock, native_mutex_unlock,
    native_mutex_trylock, native_mutex_initialize,
    native_mutex_destroy, native_cond_wait):
    use rb_nativethread_lock_t instead of pthread_mutex_t

  • thread_pthread.c (native_mutex_debug): make argument type-agnostic
    to avoid later cast.

  • thread_pthread.c (register_cached_thread_and_wait):
    replace PTHREAD_COND_INITIALIZER with RB_NATIVETHREAD_COND_INIT,
    use native_mutex_{lock,unlock}

  • thread_pthread.c (use_cached_thread):
    use native_mutex_{lock,unlock}

  • thread_pthread.c (native_sleep):
    use rb_nativethread_lock_t to match th->interrupt_lock,
    use native_mutex_{lock,unlock}

  • thread_pthread.c (timer_thread_lock): use rb_nativethread_lock_t type

History

#1 Updated by Koichi Sasada about 1 year ago

+1

// SASADA Koichi at atdot dot net

#2 Updated by Anonymous about 1 year ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

Applied in changeset r47185.


thread_pthread: prefer rb_nativethread* types/functions

This will make it easier for us to try alternative mutex/condvar
implementations while still using pthreads for thread management.
[Feature #10134]

  • thread_pthread.h: define RB_NATIVETHREAD_LOCK_INIT and
    RB_NATIVETHREAD_COND_INIT macros

  • thread_pthread.c (native_mutex_lock, native_mutex_unlock,
    native_mutex_trylock, native_mutex_initialize,
    native_mutex_destroy, native_cond_wait):
    use rb_nativethread_lock_t instead of pthread_mutex_t

  • thread_pthread.c (native_mutex_debug): make argument type-agnostic
    to avoid later cast.

  • thread_pthread.c (register_cached_thread_and_wait):
    replace PTHREAD_COND_INITIALIZER with RB_NATIVETHREAD_COND_INIT,
    use native_mutex_{lock,unlock}

  • thread_pthread.c (use_cached_thread):
    use native_mutex_{lock,unlock}

  • thread_pthread.c (native_sleep):
    use rb_nativethread_lock_t to match th->interrupt_lock,
    use native_mutex_{lock,unlock}

  • thread_pthread.c (timer_thread_lock): use rb_nativethread_lock_t type

Also available in: Atom PDF