Re: Threads killen

Mauricio Fernández <[email protected]> Thu, 15 May 2003 09:07:32 +0200
Newsgroups gmane.comp.lang.ruby.german
Message-ID <[email protected]>
On Thu, May 15, 2003 at 12:42:17AM +0200, Florian G. Pflug wrote:
> On Thu, May 15, 2003 at 12:10:24AM +0200, Mauricio Fernández wrote:
> > Warum? Die Systemaufrufe sind alle "kurz" und Ruby muss nicht darauf
> > warten...
> 
> Aber ruby ließt denke ich die standard-ausgabe des childs. Und normalerweise

Nicht mit system, glaube ich; der Childprozess erbt die Standardausgabe
Rubys und wird darin schreiben. Nur würde Ruby auf die Ausgabe warten,
wenn Kernel::` (oder popen) benuztz wäre, aber noch in diesem Fall können
andere Threads wegen der nichtblockierenden E/A weiter laufen (wie in
deinem Mail angegeben).

> (sofern man das nicht umschaltet) ist file-io (und d.h auch io auf pipes,
> sockets, ...) unter unix blocking. d.h - wenn man read() aufruft, und es
> gibt nix zu lesen, blockt man solange bis was da ist.
> 
> Ruby verwendet zwar non-blocking io, um dieses problem zu umgehen,
> (siehe meine andere mail im gleichen (mail)thread) -
> aber die gestellte frage macht schon sinn.

Sinn macht es ja, und die Antwort ist "Kernel::system blockiert die
andere Threads nicht", oder?

-- 
 _           _                             
| |__   __ _| |_ ___ _ __ ___   __ _ _ __  
| '_ \ / _` | __/ __| '_ ` _ \ / _` | '_ \ 
| |_) | (_| | |_\__ \ | | | | | (_| | | | |
|_.__/ \__,_|\__|___/_| |_| |_|\__,_|_| |_|
	Running Debian GNU/Linux Sid (unstable)
batsman dot geo at yahoo dot com

Because I don't need to worry about finances I can ignore Microsoft
and take over the (computing) world from the grassroots.
	-- Linus Torvalds