[#80531] Re: [ruby-cvs:65407] normal:r58236 (trunk): thread.c: comments on M:N threading [ci skip] — Eric Wong <normalperson@...>
SASADA Koichi <ko1@ruby-lang.org> wrote:
On 2017/04/02 11:35, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
Eric Wong <normalperson@yhbt.net> wrote:
On 2017/05/08 9:33, Eric Wong wrote:
On 2017/05/08 10:53, SASADA Koichi wrote:
SASADA Koichi <ko1@atdot.net> wrote:
On 2017/05/08 12:01, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
On 2017/05/08 15:36, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
On 2017/05/09 12:38, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
On 2017/05/09 14:12, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
On 2017/05/09 15:23, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
Thank you.
[#80763] [Ruby trunk Feature#13434] better method definition in C API — naruse@...
Issue #13434 has been updated by naruse (Yui NARUSE).
[#80844] [Ruby trunk Bug#13503] Improve performance of some Time & Rational methods — watson1978@...
Issue #13503 has been updated by watson1978 (Shizuo Fujita).
[#80892] [Ruby trunk Misc#13514] [PATCH] thread_pthread.c (native_sleep): preserve old unblock function — ko1@...
Issue #13514 has been updated by ko1 (Koichi Sasada).
ko1@atdot.net wrote:
On 2017/04/27 8:58, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
Eric Wong <normalperson@yhbt.net> wrote:
[ruby-core:80532] Re: [ruby-cvs:65407] normal:r58236 (trunk): thread.c: comments on M:N threading [ci skip]
On 2017/04/02 11:35, Eric Wong wrote:
> However, to spawn native threads:
>
> If a Thread uses existing GVL release C-API, then the _next_
> Thread.new call will create a native thread (and future
> Thread.new will be subclass of Fiber in new native thread).
>
> So, in pseudo code:
>
> class Thread < Fiber
> def self.new
> case Thread.current[:gvl_state]
> when :none
> # default
> super # M += 1
> when :released
> # this is set by BLOCKING_REGION GVL release
> # only allow a user-level thread to spawn one new native thread
> Thread.current[:gvl_state] = :spawned
>
> NativeThread.new { Thread.new } # N += 1
> when :spawned
> # We already spawned on native thread from this user-level
> # thread, only spawn new user-level thread for now.
> super # M += 1
> end
> end
> end
>
> Current GVL release operations will change
> Thread.current[:gvl_state] from :none -> :released
Sorry I can't understand the basic of your idea with mixing Threads and
Fibers. Maybe you need to define more about the model.
Our plan is not mixing Threads and Fibers, so that (hopefully) there are
no problem.
Thanks,
Koichi
--
// SASADA Koichi at atdot dot net
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>