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

thread.c (consume_communication_pipe): disarm UBF_TIMER before consume

Same reasoning as the disarm in rb_sigwait_fd_get, the current
thread is already processing signals, so we do not need
UBF_TIMER to continually kick the process, anymore.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64390 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2018-08-16 09:16:11 +00:00
parent 3872ea814c
commit e3f6429eff
2 changed files with 9 additions and 0 deletions

View file

@ -4269,6 +4269,14 @@ consume_communication_pipe(int fd)
ssize_t result;
int ret = FALSE; /* for rb_sigwait_sleep */
/*
* disarm UBF_TIMER before we read, because it can become
* re-armed at any time via sighandler and the pipe will refill
* We can disarm it because this thread is now processing signals
* and we do not want unnecessary SIGVTALRM
*/
ubf_timer_disarm();
while (1) {
result = read(fd, buff, sizeof(buff));
if (result > 0) {

View file

@ -22,6 +22,7 @@
#define unregister_ubf_list(th)
#define ubf_wakeup_all_threads() do {} while (0)
#define ubf_threads_empty() (1)
#define ubf_timer_disarm() do {} while (0)
static volatile DWORD ruby_native_thread_key = TLS_OUT_OF_INDEXES;