[前][次][番号順一覧][スレッド一覧]

ruby-changes:24269

From: nobu <ko1@a...>
Date: Thu, 5 Jul 2012 16:00:42 +0900 (JST)
Subject: [ruby-changes:24269] nobu:r36320 (trunk): ThreadShield

nobu	2012-07-05 16:00:29 +0900 (Thu, 05 Jul 2012)

  New Revision: 36320

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=36320

  Log:
    ThreadShield
    
    * thread.c (ThreadShield): rename from Barrier.

  Modified files:
    trunk/ChangeLog
    trunk/include/ruby/intern.h
    trunk/load.c
    trunk/thread.c

Index: include/ruby/intern.h
===================================================================
--- include/ruby/intern.h	(revision 36319)
+++ include/ruby/intern.h	(revision 36320)
@@ -835,10 +835,10 @@
 VALUE rb_mutex_unlock(VALUE mutex);
 VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
 VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
-VALUE rb_barrier_new(void);
-VALUE rb_barrier_wait(VALUE self);
-VALUE rb_barrier_release(VALUE self);
-VALUE rb_barrier_destroy(VALUE self);
+VALUE rb_thread_shield_new(void);
+VALUE rb_thread_shield_wait(VALUE self);
+VALUE rb_thread_shield_release(VALUE self);
+VALUE rb_thread_shield_destroy(VALUE self);
 /* time.c */
 VALUE rb_time_new(time_t, long);
 VALUE rb_time_nano_new(time_t, long);
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 36319)
+++ ChangeLog	(revision 36320)
@@ -1,3 +1,7 @@
+Thu Jul  5 16:00:24 2012  Nobuyoshi Nakada  <nobu@r...>
+
+	* thread.c (ThreadShield): rename from Barrier.
+
 Thu Jul  5 15:14:50 2012  Nobuyoshi Nakada  <nobu@r...>
 
 	* bootstraptest/runner.rb (show_progress): refine error output. do not
Index: load.c
===================================================================
--- load.c	(revision 36319)
+++ load.c	(revision 36320)
@@ -398,7 +398,7 @@
 	}
 	/* partial state */
 	ftptr = ruby_strdup(ftptr);
-	data = (st_data_t)rb_barrier_new();
+	data = (st_data_t)rb_thread_shield_new();
 	st_insert(loading_tbl, (st_data_t)ftptr, data);
 	return (char *)ftptr;
     }
@@ -406,7 +406,7 @@
 	rb_warning("loading in progress, circular require considered harmful - %s", ftptr);
 	rb_backtrace();
     }
-    switch (rb_barrier_wait((VALUE)data)) {
+    switch (rb_thread_shield_wait((VALUE)data)) {
       case Qfalse:
 	data = (st_data_t)ftptr;
 	st_delete(loading_tbl, &data, 0);
@@ -418,11 +418,11 @@
 }
 
 static int
-release_barrier(st_data_t *key, st_data_t *value, st_data_t done, int existing)
+release_thread_shield(st_data_t *key, st_data_t *value, st_data_t done, int existing)
 {
-    VALUE barrier = (VALUE)*value;
+    VALUE thread_shield = (VALUE)*value;
     if (!existing) return ST_STOP;
-    if (done ? rb_barrier_destroy(barrier) : rb_barrier_release(barrier)) {
+    if (done ? rb_thread_shield_destroy(thread_shield) : rb_thread_shield_release(thread_shield)) {
 	/* still in-use */
 	return ST_CONTINUE;
     }
@@ -437,7 +437,7 @@
 	st_data_t key = (st_data_t)ftptr;
 	st_table *loading_tbl = get_loading_table();
 
-	st_update(loading_tbl, key, release_barrier, done);
+	st_update(loading_tbl, key, release_thread_shield, done);
     }
 }
 
Index: thread.c
===================================================================
--- thread.c	(revision 36319)
+++ thread.c	(revision 36320)
@@ -60,7 +60,7 @@
 #endif
 
 VALUE rb_cMutex;
-VALUE rb_cBarrier;
+VALUE rb_cThreadShield;
 
 static void sleep_timeval(rb_thread_t *th, struct timeval time);
 static void sleep_wait_for_interrupt(rb_thread_t *th, double sleepsec);
@@ -3700,96 +3700,96 @@
 }
 
 /*
- * Document-class: Barrier
+ * Document-class: ThreadShield
  */
 static void
-barrier_mark(void *ptr)
+thread_shield_mark(void *ptr)
 {
     rb_gc_mark((VALUE)ptr);
 }
 
-static const rb_data_type_t barrier_data_type = {
-    "barrier",
-    {barrier_mark, 0, 0,},
+static const rb_data_type_t thread_shield_data_type = {
+    "thread_shield",
+    {thread_shield_mark, 0, 0,},
 };
 
 static VALUE
-barrier_alloc(VALUE klass)
+thread_shield_alloc(VALUE klass)
 {
-    return TypedData_Wrap_Struct(klass, &barrier_data_type, (void *)mutex_alloc(0));
+    return TypedData_Wrap_Struct(klass, &thread_shield_data_type, (void *)mutex_alloc(0));
 }
 
-#define GetBarrierPtr(obj) ((VALUE)rb_check_typeddata((obj), &barrier_data_type))
-#define BARRIER_WAITING_MASK (FL_USER0|FL_USER1|FL_USER2|FL_USER3|FL_USER4|FL_USER5|FL_USER6|FL_USER7|FL_USER8|FL_USER9|FL_USER10|FL_USER11|FL_USER12|FL_USER13|FL_USER14|FL_USER15|FL_USER16|FL_USER17|FL_USER18|FL_USER19)
-#define BARRIER_WAITING_SHIFT (FL_USHIFT)
-#define rb_barrier_waiting(b) (int)((RBASIC(b)->flags&BARRIER_WAITING_MASK)>>BARRIER_WAITING_SHIFT)
-#define rb_barrier_waiting_inc(b) do { \
-    int w = rb_barrier_waiting(b); \
+#define GetThreadShieldPtr(obj) ((VALUE)rb_check_typeddata((obj), &thread_shield_data_type))
+#define THREAD_SHIELD_WAITING_MASK (FL_USER0|FL_USER1|FL_USER2|FL_USER3|FL_USER4|FL_USER5|FL_USER6|FL_USER7|FL_USER8|FL_USER9|FL_USER10|FL_USER11|FL_USER12|FL_USER13|FL_USER14|FL_USER15|FL_USER16|FL_USER17|FL_USER18|FL_USER19)
+#define THREAD_SHIELD_WAITING_SHIFT (FL_USHIFT)
+#define rb_thread_shield_waiting(b) (int)((RBASIC(b)->flags&THREAD_SHIELD_WAITING_MASK)>>THREAD_SHIELD_WAITING_SHIFT)
+#define rb_thread_shield_waiting_inc(b) do { \
+    int w = rb_thread_shield_waiting(b); \
     w++; \
-    RBASIC(b)->flags &= ~BARRIER_WAITING_MASK; \
-    RBASIC(b)->flags |= ((VALUE)w << BARRIER_WAITING_SHIFT);	\
+    RBASIC(b)->flags &= ~THREAD_SHIELD_WAITING_MASK; \
+    RBASIC(b)->flags |= ((VALUE)w << THREAD_SHIELD_WAITING_SHIFT);	\
 } while (0)
-#define rb_barrier_waiting_dec(b) do { \
-    int w = rb_barrier_waiting(b); \
+#define rb_thread_shield_waiting_dec(b) do { \
+    int w = rb_thread_shield_waiting(b); \
     w--; \
-    RBASIC(b)->flags &= ~BARRIER_WAITING_MASK; \
-    RBASIC(b)->flags |= ((VALUE)w << BARRIER_WAITING_SHIFT); \
+    RBASIC(b)->flags &= ~THREAD_SHIELD_WAITING_MASK; \
+    RBASIC(b)->flags |= ((VALUE)w << THREAD_SHIELD_WAITING_SHIFT); \
 } while (0)
 
 VALUE
-rb_barrier_new(void)
+rb_thread_shield_new(void)
 {
-    VALUE barrier = barrier_alloc(rb_cBarrier);
-    rb_mutex_lock((VALUE)DATA_PTR(barrier));
-    return barrier;
+    VALUE thread_shield = thread_shield_alloc(rb_cThreadShield);
+    rb_mutex_lock((VALUE)DATA_PTR(thread_shield));
+    return thread_shield;
 }
 
 /*
- * Wait a barrier.
+ * Wait a thread shield.
  *
  * Returns
- *  true:  acquired the barrier
- *  false: the barrier was destroyed and no other threads waiting
- *  nil:   the barrier was destroyed but still in use
+ *  true:  acquired the thread shield
+ *  false: the thread shield was destroyed and no other threads waiting
+ *  nil:   the thread shield was destroyed but still in use
  */
 VALUE
-rb_barrier_wait(VALUE self)
+rb_thread_shield_wait(VALUE self)
 {
-    VALUE mutex = GetBarrierPtr(self);
+    VALUE mutex = GetThreadShieldPtr(self);
     rb_mutex_t *m;
 
     if (!mutex) return Qfalse;
     GetMutexPtr(mutex, m);
     if (m->th == GET_THREAD()) return Qnil;
-    rb_barrier_waiting_inc(self);
+    rb_thread_shield_waiting_inc(self);
     rb_mutex_lock(mutex);
-    rb_barrier_waiting_dec(self);
+    rb_thread_shield_waiting_dec(self);
     if (DATA_PTR(self)) return Qtrue;
     rb_mutex_unlock(mutex);
-    return rb_barrier_waiting(self) > 0 ? Qnil : Qfalse;
+    return rb_thread_shield_waiting(self) > 0 ? Qnil : Qfalse;
 }
 
 /*
  * Release a barrrier, and return true if it has waiting threads.
  */
 VALUE
-rb_barrier_release(VALUE self)
+rb_thread_shield_release(VALUE self)
 {
-    VALUE mutex = GetBarrierPtr(self);
+    VALUE mutex = GetThreadShieldPtr(self);
     rb_mutex_unlock(mutex);
-    return rb_barrier_waiting(self) > 0 ? Qtrue : Qfalse;
+    return rb_thread_shield_waiting(self) > 0 ? Qtrue : Qfalse;
 }
 
 /*
  * Release and destroy a barrrier, and return true if it has waiting threads.
  */
 VALUE
-rb_barrier_destroy(VALUE self)
+rb_thread_shield_destroy(VALUE self)
 {
-    VALUE mutex = GetBarrierPtr(self);
+    VALUE mutex = GetThreadShieldPtr(self);
     DATA_PTR(self) = 0;
     rb_mutex_unlock(mutex);
-    return rb_barrier_waiting(self) > 0 ? Qtrue : Qfalse;
+    return rb_thread_shield_waiting(self) > 0 ? Qtrue : Qfalse;
 }
 
 /* variables for recursive traversals */

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]