summaryrefslogtreecommitdiff
path: root/ractor.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-03-07 10:24:03 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-03-13 09:11:21 +0900
commit983f6d0f2af157ce2df9428a1701d8666877d0f5 (patch)
tree92afde481344411968f1b98eda2d94a1ece676bb /ractor.c
parent2148ee78a5bc5e679903f5839c66578bfcf94a39 (diff)
downloadruby-983f6d0f2af157ce2df9428a1701d8666877d0f5.tar.gz
Moved locking VM to an atomic operation
Diffstat (limited to 'ractor.c')
-rw-r--r--ractor.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/ractor.c b/ractor.c
index 4cb7b5ad49..36898dbf1e 100644
--- a/ractor.c
+++ b/ractor.c
@@ -290,7 +290,7 @@ RACTOR_PTR(VALUE self)
return r;
}
-static uint32_t ractor_last_id;
+static rb_atomic_t ractor_last_id;
#if RACTOR_CHECK_MODE > 0
MJIT_FUNC_EXPORTED uint32_t
@@ -1399,11 +1399,7 @@ ractor_next_id(void)
{
uint32_t id;
- RB_VM_LOCK();
- {
- id = ++ractor_last_id;
- }
- RB_VM_UNLOCK();
+ id = (uint32_t)(RUBY_ATOMIC_FETCH_ADD(ractor_last_id, 1) + 1);
return id;
}