1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* thread_pthread.c (ping_signal_thread_list): remove return value.

* thread_pthread.c (check_signal_thread_list): add a new function to
  check if signal thread list is empty.
* thread_pthread.c (thread_timer): check signal thread list after
  timer_thread_function(). main thread might be added into signal thread
  list during timer_thread_function().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34099 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagachika 2011-12-22 13:45:58 +00:00
parent afbcfdf961
commit b288aa2d89
2 changed files with 22 additions and 6 deletions

View file

@ -1,3 +1,12 @@
Thu Dec 22 22:37:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
* thread_pthread.c (ping_signal_thread_list): remove return value.
* thread_pthread.c (check_signal_thread_list): add a new function to
check if signal thread list is empty.
* thread_pthread.c (thread_timer): check signal thread list after
timer_thread_function(). main thread might be added into signal thread
list during timer_thread_function().
Thu Dec 22 00:40:24 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com> Thu Dec 22 00:40:24 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
* ext/bigdecimal/bigdecimal.c (VpMult, VpCtoV, VpSqrt): remove assigned * ext/bigdecimal/bigdecimal.c (VpMult, VpCtoV, VpSqrt): remove assigned

View file

@ -1024,7 +1024,7 @@ ubf_select(void *ptr)
ubf_select_each(th); ubf_select_each(th);
} }
static int static void
ping_signal_thread_list(void) { ping_signal_thread_list(void) {
if (signal_thread_list_anchor.next) { if (signal_thread_list_anchor.next) {
FGLOCK(&signal_thread_list_lock, { FGLOCK(&signal_thread_list_lock, {
@ -1036,17 +1036,23 @@ ping_signal_thread_list(void) {
list = list->next; list = list->next;
} }
}); });
}
}
static int
check_signal_thread_list(void)
{
if (signal_thread_list_anchor.next)
return 1; return 1;
} else
else {
return 0; return 0;
}
} }
#else /* USE_SIGNAL_THREAD_LIST */ #else /* USE_SIGNAL_THREAD_LIST */
#define add_signal_thread_list(th) (void)(th) #define add_signal_thread_list(th) (void)(th)
#define remove_signal_thread_list(th) (void)(th) #define remove_signal_thread_list(th) (void)(th)
#define ubf_select 0 #define ubf_select 0
static int ping_signal_thread_list(void) { return 0; } static void ping_signal_thread_list(void) { return; }
static int check_signal_thread_list(void) { return 0; }
#endif /* USE_SIGNAL_THREAD_LIST */ #endif /* USE_SIGNAL_THREAD_LIST */
static int timer_thread_pipe[2] = {-1, -1}; static int timer_thread_pipe[2] = {-1, -1};
@ -1140,8 +1146,9 @@ thread_timer(void *p)
int need_polling; int need_polling;
/* timer function */ /* timer function */
need_polling = ping_signal_thread_list(); ping_signal_thread_list();
timer_thread_function(0); timer_thread_function(0);
need_polling = check_signal_thread_list();
if (TT_DEBUG) WRITE_CONST(2, "tick\n"); if (TT_DEBUG) WRITE_CONST(2, "tick\n");