Re: Threads killen

Mauricio Fernández <[email protected]> Thu, 15 May 2003 00:10:24 +0200
Newsgroups gmane.comp.lang.ruby.german
Message-ID <[email protected]>
On Wed, May 14, 2003 at 10:10:20PM +0200, jonnypichler - bse wrote:
> hi
> 
> ich hab recently mit ähnlichen problemen gekämpft...
> 
> was mich wundert: wie kannst du überhaupt die kill-methode aufrufen solange
> das child läuft - meine erfahrung ist, dass bei einem system()-call dem
> ruby-interpreter die kontrolle solange entzogen wird, bis der

Ruby benutzt fork und dann execl (wenn das Program mit /bin/sh läuft) oder execv.

> system()-prozess terminiert ist, auch wenn dieser in einem thread gestartet
> wird.
> macht ja auch sinn, weil rubythreads ja nur ruby-internal sind (siehe dein
> quellenverweis).
> oder kommt das nur daher, dass ich ruby unter win32 und nicht unter linux
> verwende?

Verstehe nicht warum Ruby auf den Prozess warten sollte...
In UN*X (und Cygwin auch, oder?) wird fork verwendet, so dass die andere
Threads nicht blockiert werden; in Win32, CreateChild (scheint etwa wie
fork zu sein).
 
> zitat aus "programming ruby" hierzu:
> ...And if some thread happens to make a call to the operating system that
> takes a long time to complete, all threads will hang until the interpreter
> gets control back.
> 
> ich denke dieses "gets control back" geschieht erst durch das ende des
> child-prozesses...

Warum? Die Systemaufrufe sind alle "kurz" und Ruby muss nicht darauf
warten...

> freue mich auf antwort,
> patrick
> ___
> ruby version i'm currently using:
> ruby 1.6.8 (2002-12-24) [i686-cygwin]
> 

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

On the Internet, no one knows you're using Windows NT
	-- Submitted by Ramiro Estrugo, [email protected]