From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-3.9 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.1 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 327F31F404 for ; Sun, 2 Sep 2018 09:24:38 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 2BB09120968; Sun, 2 Sep 2018 18:24:37 +0900 (JST) Received: from dcvr.yhbt.net (dcvr.yhbt.net [64.71.152.64]) by neon.ruby-lang.org (Postfix) with ESMTPS id 3A84A120975 for ; Sun, 2 Sep 2018 18:24:33 +0900 (JST) Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 7E84B1F404; Sun, 2 Sep 2018 09:24:31 +0000 (UTC) Date: Sun, 2 Sep 2018 09:24:31 +0000 From: Eric Wong To: ruby-core@ruby-lang.org Message-ID: <20180902092431.tcaebhyuoryikm73@whir> References: <20180827202714.tqbwqrdbykywlqvq@dcvr> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180827202714.tqbwqrdbykywlqvq@dcvr> X-ML-Name: ruby-core X-Mail-Count: 88806 Subject: [ruby-core:88806] Re: [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid 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" > https://bugs.ruby-lang.org/issues/13618 > > I have at least one more preparatory change which should be fairly > straightforward; but unfortunately makes some of the current code > more verbose (because of `container_of'): > > https://80x24.org/spew/20180827201123.4364-1-e@80x24.org/raw > "unify sync_waiter, waitpid_state, waiting_fd w/ rb_sched_waiter" Here's a work-in-progress patch showing how Queue+SizedQueue would work with "struct rb_sched_waiter": https://80x24.org/spew/20180902091557.24130-1-e@80x24.org/raw It goes on top of my coro-r64610 branch posted at [ruby-core:88800]: https://public-inbox.org/ruby-core/20180901131301.5peghdyrtmks5mka@dcvr Several tests are skipped because Thread::Coro#stop?/#status/#[]= aren't implemented, yet. Will fix later when not AFK. Another weird case to think about (not supported, yet): How should Coro switching work inside Signal.trap? q = Queue.new trap(:INT) { q.push(:INT) } q.pop I guess we'll need to figure out a way to support it...