From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-2.9 required=3.0 tests=AWL,BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_PASS,T_RP_MATCHES_RCVD shortcircuit=no autolearn=no autolearn_force=no version=3.4.0 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id C3C961F404 for ; Fri, 2 Feb 2018 06:22:16 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id C142B1209F0; Fri, 2 Feb 2018 15:22:14 +0900 (JST) Received: from dcvr.yhbt.net (dcvr.yhbt.net [64.71.152.64]) by neon.ruby-lang.org (Postfix) with ESMTPS id 6EEB01209EF for ; Fri, 2 Feb 2018 15:22:10 +0900 (JST) Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 9E5821F404; Fri, 2 Feb 2018 06:22:08 +0000 (UTC) Date: Fri, 2 Feb 2018 06:22:08 +0000 From: Eric Wong To: ruby-core@ruby-lang.org Message-ID: <20180202062208.GA15781@starla> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-ML-Name: ruby-core X-Mail-Count: 85336 Subject: [ruby-core:85336] 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" sam.saffron@gmail.com wrote: > Having discussed this with Koichi I think he is wanting to > merge this into core but the big blocker here is naming and > some small details. I'm leaning towards Thread::Green, so existing users can do s/Thread.new/Thread::Green.new/ in many cases. But, it would be easier if somebody good at API design (matz) chimed in :> Meanwhile, I think get rid of floating point timeouts: https://bugs.ruby-lang.org/issues/14431 Then it might be easier to work on Queue/Mutex/... support. > > One question, is how will Thread#[]/#[]= be handled inside the lambda? > > I think it should be simply treated as a Thread global so it is shared between the lambdas. > > If you need lambda specific storage we could implement something else. Otherwise it complicates stuff. That's probably too incompatible; I think the current Fiber#[]/#[]= behavior is fine (Thread::Green implemented as subclass of Fiber) > One big question I have though is how rb_thread_call_with_gvl > and rb_thread_call_without_gvl will be handled, cause without > magic handling there we don't get free PG / MiniRacer support > and many others which is a huge shame. I expect PG to be able to benefit from rb_wait_for_single_fd when using sockets. I know mysql2 uses rb_wait_for_single_fd, at least. rb_thread_call_* is meant for CPU (or FS/memory)-bound tasks, and wouldn't MiniRacer be CPU-bound? Dunno much about it...