diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-16 09:16:11 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-16 09:16:11 +0000 |
commit | e3f6429effd6d63d106d72eb757c78a4cdab2e4a (patch) | |
tree | da9db36691986d35c8b3423ab00df8fbf742d481 /thread.c | |
parent | 3872ea814c0cacbf12bd14cb478f682328862e4a (diff) | |
download | ruby-e3f6429effd6d63d106d72eb757c78a4cdab2e4a.tar.gz |
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
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -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) { |