From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-4.0 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 9B25B1F87F for ; Thu, 22 Nov 2018 10:40:35 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id C21EF121105; Thu, 22 Nov 2018 19:40:33 +0900 (JST) Received: from dcvr.yhbt.net (dcvr.yhbt.net [64.71.152.64]) by neon.ruby-lang.org (Postfix) with ESMTPS id E0A101210A5 for ; Thu, 22 Nov 2018 19:40:28 +0900 (JST) Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 3D7C71F87F; Thu, 22 Nov 2018 10:40:27 +0000 (UTC) Date: Thu, 22 Nov 2018 10:40:27 +0000 From: Eric Wong To: ruby-core@ruby-lang.org Message-ID: <20181122104027.55pv2ewb4znxd5lk@dcvr> References: <20181122021434.GA16712@cinder> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20181122021434.GA16712@cinder> X-ML-Name: ruby-core X-Mail-Count: 89968 Subject: [ruby-core:89968] Thread::Light updated for r65925 (sleep fix) X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" > > I've just tested this branch(`osx/kqueue`). It looks like > > `sleep` does not work as expected(it blocks forever) inside > > light thread if some blocking queue is used, see ex: > I think you also need to join thread::Light to ensure they > finish, otherwise there's nothing to "drive" them. The following improves scheduling for Kernel#sleep and Queue#pop/#push by allowing them to "drive" Thread::Light (and also adds Thread#join as a Thread::Light scheduling point) https://80x24.org/spew/20181122100334.evcxdcorsjrhqfj2@dcvr/raw Thanks again Dmitry. Updated pull request (above change squashed): The following changes since commit 0bd8193eba5139812c18f779ba5831b3c7df01d7: ext/socket/init.c (rsock_socket0): non-blocking for non-SOCK_NONBLOCK (2018-11-22 10:13:21 +0000) are available in the git repository at: https://80x24.org/ruby.git thread-light-r65925 for you to fetch changes up to 2801f3e4daeec1b21bc138b468a2617c10a3ea6a: I need sleep myself :<