diff options
author | Koichi Sasada <[email protected]> | 2022-04-17 03:40:23 +0900 |
---|---|---|
committer | Koichi Sasada <[email protected]> | 2022-04-22 07:54:09 +0900 |
commit | 1c4fc0241d125879e1e5169f267f26637772f3a7 (patch) | |
tree | d23704a9fc31fe8bfb29835ce0bdae3dc278b513 /thread_win32.c | |
parent | cb02324c4e5c7aae0add0a5c4e5adbf637d9acb0 (diff) |
rename thread internal naming
Now GVL is not process *Global* so this patch try to use
another words.
* `rb_global_vm_lock_t` -> `struct rb_thread_sched`
* `gvl->owner` -> `sched->running`
* `gvl->waitq` -> `sched->readyq`
* `rb_gvl_init` -> `rb_thread_sched_init`
* `gvl_destroy` -> `rb_thread_sched_destroy`
* `gvl_acquire` -> `thread_sched_to_running` # waiting -> ready -> running
* `gvl_release` -> `thread_sched_to_waiting` # running -> waiting
* `gvl_yield` -> `thread_sched_yield`
* `GVL_UNLOCK_BEGIN` -> `THREAD_BLOCKING_BEGIN`
* `GVL_UNLOCK_END` -> `THREAD_BLOCKING_END`
* removed
* `rb_ractor_gvl`
* `rb_vm_gvl_destroy` (not used)
There are GVL functions such as `rb_thread_call_without_gvl()` yet
but I don't have good name to replace them. Maybe GVL stands for
"Greate Valuable Lock" or something like that.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/5814
Diffstat (limited to 'thread_win32.c')
-rw-r--r-- | thread_win32.c | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/thread_win32.c b/thread_win32.c index 9b44ceb96a..d8544af3a3 100644 --- a/thread_win32.c +++ b/thread_win32.c @@ -103,39 +103,41 @@ w32_mutex_create(void) #define GVL_DEBUG 0 static void -gvl_acquire(rb_global_vm_lock_t *gvl, rb_thread_t *th) +thread_sched_to_running(struct rb_thread_sched *sched, rb_thread_t *th) { - w32_mutex_lock(gvl->lock, false); + w32_mutex_lock(sched->lock, false); if (GVL_DEBUG) fprintf(stderr, "gvl acquire (%p): acquire\n", th); } static void -gvl_release(rb_global_vm_lock_t *gvl) +thread_sched_to_waiting(struct rb_thread_sched *sched) { - ReleaseMutex(gvl->lock); + ReleaseMutex(sched->lock); } static void -gvl_yield(rb_global_vm_lock_t *gvl, rb_thread_t *th) +thread_sched_yield(struct rb_thread_sched *sched, rb_thread_t *th) { - gvl_release(gvl); - native_thread_yield(); - gvl_acquire(gvl, th); + thread_sched_to_waiting(sched); + native_thread_yield(); + thread_sched_to_running(sched, th); } void -rb_gvl_init(rb_global_vm_lock_t *gvl) +rb_thread_sched_init(struct rb_thread_sched *sched) { - if (GVL_DEBUG) fprintf(stderr, "gvl init\n"); - gvl->lock = w32_mutex_create(); + if (GVL_DEBUG) fprintf(stderr, "sched init\n"); + sched->lock = w32_mutex_create(); } -static void -gvl_destroy(rb_global_vm_lock_t *gvl) +#if 0 +void +rb_thread_sched_destroy(struct rb_thread_sched *sched) { - if (GVL_DEBUG) fprintf(stderr, "gvl destroy\n"); - CloseHandle(gvl->lock); + if (GVL_DEBUG) fprintf(stderr, "sched destroy\n"); + CloseHandle(sched->lock); } +#endif rb_thread_t * ruby_thread_from_native(void) @@ -301,7 +303,7 @@ native_sleep(rb_thread_t *th, rb_hrtime_t *rel) { const volatile DWORD msec = rel ? hrtime2msec(*rel) : INFINITE; - GVL_UNLOCK_BEGIN(th); + THREAD_BLOCKING_BEGIN(th); { DWORD ret; @@ -324,7 +326,7 @@ native_sleep(rb_thread_t *th, rb_hrtime_t *rel) th->unblock.arg = 0; rb_native_mutex_unlock(&th->interrupt_lock); } - GVL_UNLOCK_END(th); + THREAD_BLOCKING_END(th); } void |