[#397093] Using binding + set_trace_func to capture execution state — Reginald Tan <lists@...>

Hi guys, I'm interested in building a program that will display the

18 messages 2012/07/03
[#397097] Re: Using binding + set_trace_func to capture execution state — Peter Zotov <whitequark@...> 2012/07/03

Reginald Tan писал 03.07.2012 05:11:

[#397115] Copying Files — "Alex C." <lists@...>

Hi,

17 messages 2012/07/03

[#397165] Green threads in 1.9.* ? — rex goxman <lists@...>

I am new to Ruby. I am somewhat surprised that I was not able to find

56 messages 2012/07/04
[#397224] Re: Green threads in 1.9.* ? — rex goxman <lists@...> 2012/07/05

<<There are definitely many reasons to prefer native threads over green

[#397227] Re: Green threads in 1.9.* ? — Tony Arcieri <tony.arcieri@...> 2012/07/05

On Thu, Jul 5, 2012 at 6:38 AM, rex goxman <lists@ruby-forum.com> wrote:

[#397232] Re: Green threads in 1.9.* ? — rex goxman <lists@...> 2012/07/05

Tony Arcieri wrote in post #1067551:

[#397234] Re: Green threads in 1.9.* ? — Tony Arcieri <tony.arcieri@...> 2012/07/05

On Thu, Jul 5, 2012 at 10:26 AM, rex goxman <lists@ruby-forum.com> wrote:

[#397239] Re: Green threads in 1.9.* ? — rex goxman <lists@...> 2012/07/05

Tony Arcieri wrote in post #1067563:

[#397251] Re: Green threads in 1.9.* ? — Tony Arcieri <tony.arcieri@...> 2012/07/06

On Thu, Jul 5, 2012 at 12:31 PM, rex goxman <lists@ruby-forum.com> wrote:

[#397253] Re: Green threads in 1.9.* ? — rex goxman <lists@...> 2012/07/06

Tony Arcieri wrote in post #1067609:

[#397256] Re: Green threads in 1.9.* ? — Tony Arcieri <tony.arcieri@...> 2012/07/06

On Thu, Jul 5, 2012 at 8:24 PM, rex goxman <lists@ruby-forum.com> wrote:

[#397260] Re: Green threads in 1.9.* ? — Ryan Davis <ryand-ruby@...> 2012/07/06

[#397267] Re: Green threads in 1.9.* ? — Robert Klemme <shortcutter@...> 2012/07/06

On Fri, Jul 6, 2012 at 8:52 AM, Ryan Davis <ryand-ruby@zenspider.com> wrote:

[#397269] Re: Green threads in 1.9.* ? — rex goxman <lists@...> 2012/07/06

Robert Klemme wrote in post #1067663:

[#397185] Insert letters of the alphabet between the original letters of a string — Joao Silva <lists@...>

Hi All.

10 messages 2012/07/04

[#397198] the best way to match these domains. — Eliezer Croitoru <eliezer@...>

thanks in advance i need a bit help to break the ice that my head is in.

18 messages 2012/07/05
[#397202] Re: the best way to match these domains. — Robert Klemme <shortcutter@...> 2012/07/05

On Thu, Jul 5, 2012 at 4:13 AM, Eliezer Croitoru <eliezer@ngtech.co.il> wrote:

[#397245] Re: the best way to match these domains. — Eliezer Croitoru <eliezer@...> 2012/07/05

On 7/5/2012 10:03 AM, Robert Klemme wrote:

[#397258] Re: the best way to match these domains. — Robert Klemme <shortcutter@...> 2012/07/06

On Thu, Jul 5, 2012 at 10:40 PM, Eliezer Croitoru <eliezer@ngtech.co.il> wrote:

[#397316] Re: the best way to match these domains. — Eliezer Croitoru <eliezer@...> 2012/07/07

On 7/6/2012 9:21 AM, Robert Klemme wrote:

[#397415] Re: the best way to match these domains. — Robert Klemme <shortcutter@...> 2012/07/10

On Sat, Jul 7, 2012 at 5:32 AM, Eliezer Croitoru <eliezer@ngtech.co.il> wrote:

[#397464] Re: the best way to match these domains. — Eliezer Croitoru <eliezer@...> 2012/07/11

On 7/10/2012 12:08 PM, Robert Klemme wrote:

[#397416] learning by doing part 2 - tc game — "Sebastjan H." <lists@...>

Hi,

53 messages 2012/07/10
[#397418] Re: learning by doing part 2 - tc game — "Jan E." <lists@...> 2012/07/10

Hi,

[#397419] Re: learning by doing part 2 - tc game — "Sebastjan H." <lists@...> 2012/07/10

Yes, that would be ok, but that means that the player has to create all

[#397421] Re: learning by doing part 2 - tc game — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2012/07/10

On Tue, Jul 10, 2012 at 12:39 PM, Sebastjan H. <lists@ruby-forum.com> wrote:

[#397423] Re: learning by doing part 2 - tc game — "Jan E." <lists@...> 2012/07/10

"Jes=C3=BAs Gabriel y Gal=C3=A1n" <jgabrielygalan@gmail.com> wrote in pos=

[#397424] Re: learning by doing part 2 - tc game — "Sebastjan H." <lists@...> 2012/07/10

Jan E. wrote in post #1068109:

[#397426] Re: learning by doing part 2 - tc game — "Jan E." <lists@...> 2012/07/10

Sebastjan H. wrote in post #1068110:

[#397428] Re: learning by doing part 2 - tc game — "Sebastjan H." <lists@...> 2012/07/10

Jan E. wrote in post #1068114:

[#397429] Re: learning by doing part 2 - tc game — "Jan E." <lists@...> 2012/07/10

Sebastjan H. wrote in post #1068117:

[#397430] Re: learning by doing part 2 - tc game — "Sebastjan H." <lists@...> 2012/07/10

Jan E. wrote in post #1068119:

[#397435] Re: learning by doing part 2 - tc game — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2012/07/10

On Tue, Jul 10, 2012 at 3:18 PM, Sebastjan H. <lists@ruby-forum.com> wrote:

[#397608] undefined method error — deal bitte <lists@...>

rid.database_columns[session_db_array[0]]

17 messages 2012/07/17

[#397685] odd "system" command behaviour with CUI and GUI — Joel Pearson <lists@...>

Windows 7 64-bit, Ruby 1.9.3.

12 messages 2012/07/20

[#397738] Help a blind man getting ruby to work — "Morten T." <lists@...>

Hallo,

14 messages 2012/07/23

[#397806] Help with exercise from Chris Pine's Ruby Book: Sort without using .sort — "James H." <lists@...>

Hello all, I'm a n00b that's just getting into programming.

16 messages 2012/07/25

[#397817] modular exponentation with multiple exponents? — roob noob <lists@...>

I need to do a^b^c^d^e mod f

11 messages 2012/07/25

[#397903] How to test whether a session variable has a particular key — Doug Jolley <lists@...>

Although a session variable behaves like a hash for purposes of setting

11 messages 2012/07/30

Re: Green threads in 1.9.* ?

From: Eric Hodel <drbrain@...7.net>
Date: 2012-07-06 21:25:33 UTC
List: ruby-talk #397304
On Jul 5, 2012, at 14:22, rex goxman wrote:
> Eric Hodel wrote in post #1067586:
>> Ruby schedules use of the GVL for threads created by the ruby VM.
>>=20
>> A Ruby thread may release the GVL to run non-ruby code.

For these answers I am ignoring Windows.  You can probably treat "POSIX =
thread" as the equivalent userland threads on Windows, but don't take my =
word for it.

> What is a ruby thread?

A thread spawned from ruby.  Non-ruby threads can be spawned by other =
libraries.  For example, if you've embedded ruby in a game engine the =
game engine can have many of its own threads which ask ruby threads to =
do work.

> A green thread?

Any program that manages thread creation and scheduling for itself =
without use of the OS uses green threads.

> A kernel thread?

The most literal definition is a thread that runs in, and only in, the =
kernel.  You can ignore them for most purposes since you don't have any =
direct control over when or how many are created by your process (this =
is true for all programs, not just ruby programs).  I think that most =
frequently, kernel threads are mapped 1:1 to userland threads, but this =
may vary between different OSs.

At one point FreeBSD had multiple pthread implementations you could link =
in your program.  One had 1:1 mapping between kernel threads and =
userland threads, one had 1:N mapping (one kernel thread per process) =
and one M:N mapping (multiple userland threads per kernel thread).

Userland threads are what userland programs run.  The POSIX thread API =
(pthread) handles userland threads and takes care of spawning the =
threads, allocating stack space for them, etc.  Depending upon the =
mapping to kernel threads they may be scheduled from userland or from =
the kernel.  (I think, most frequently, from the kernel.)

> A green thread mapped to a kernel thread?

Since a green thread is scheduled from within a program the kernel has =
no knowledge of it so they won't be mapped.

> The depiction at the link somewhere above seems to suggest it is a =
green=20
> thread which is mapped one-to-one to a kernel thread.

Since pthreads typically make some communication with the kernel it =
isn't correct to call them green threads.  It's possible to have a =
pthread library that makes no communication with the kernel (a library =
similar to FreeBSD's 1:N thread library could do this), but in practice =
I doubt this happens.  It's difficult for a thread library to schedule a =
process' threads on multiple CPUs without some communication with the =
kernel.

> Some here suggest there is no such thing, just kernel threads.  I will =
assume it is a kernel thread unless you say otherwise.

I think what they describe as "kernel threads" I call "userland =
threads".  The OS often has its own threads to perform OS tasks such as =
userland scheduling, handling interrupts, polling for IO from hardware, =
etc.  I don't wish to confuse the two.

Digging in further to thread.c, the GVL is not directly part of userland =
thread scheduling or ruby thread scheduling, it's just a lock around the =
ruby VM that allows a thread to use the ruby VM.  (If a thread calls =
methods in the Ruby VM without the GVL it will likely cause corruption =
and crashes.)  Ruby uses pthread API to switch threads so it's up to the =
OS which threads get run.

Ruby will interrupt threads that have run for "too long" and allow the =
OS to schedule another thread.  This is all performed through pthread =
mutexes and condition variables.  (Perhaps I'm missing it, but I'm no =
longer seeing a list of threads waiting to run as I recall 1.8 having =
which is a requirement for a green thread implementation.)


In This Thread