aboutsummaryrefslogtreecommitdiffstats
path: root/thread_win32.c
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-12-30 18:30:36 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-12-30 18:30:36 +0000
commit9f90682c4b60bf9788b94ccb107ac6b8a5cc5f7e (patch)
treee4855d9f2e2b103eb07ae99fb84e78e005fb6275 /thread_win32.c
parent5bc85d62649d3484cab1adca0edbc514fa92aa6d (diff)
downloadruby-9f90682c4b60bf9788b94ccb107ac6b8a5cc5f7e.tar.gz
* thread_win32.c (native_thread_destroy): decreased the probability of
using the interrupt event in the thread termination. see [ruby-core:27199]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26207 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread_win32.c')
-rw-r--r--thread_win32.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/thread_win32.c b/thread_win32.c
index 1a7917e518..3cff714e87 100644
--- a/thread_win32.c
+++ b/thread_win32.c
@@ -449,10 +449,9 @@ native_thread_init_stack(rb_thread_t *th)
static void
native_thread_destroy(rb_thread_t *th)
{
- HANDLE intr = th->native_thread_data.interrupt_event;
+ HANDLE intr = InterlockedExchangePointer(&th->native_thread_data.interrupt_event, 0);
native_mutex_destroy(&th->interrupt_lock);
thread_debug("close handle - intr: %p, thid: %p\n", intr, th->thread_id);
- th->native_thread_data.interrupt_event = 0;
w32_close_handle(intr);
}