Warum hat Ruby keinen eingebauten ThreadPool?

7

Ich habe ein Programm, das 10000 Threads auf einmal erstellt und 8 gleichzeitig ausführt.

Aber Ruby hat keinen eingebauten ThreadPool als Java. Gibt es einen guten Grund?

    
Cheng 01.10.2010, 15:41
quelle

3 Antworten

2

Wahrscheinlich liegt der Grund daran, dass Ruby keine "echten" Threads hat. Es hat sogenannte grüne Fäden. Der Ruby-Interpreter kümmert sich um das Planen von Ausführungsthreads, ohne dass zugrundeliegende OS-Threads verwendet werden. Dies macht effektiv Ruby single threaded.

    
Raindog 04.12.2010, 03:53
quelle
20

wahrscheinlich, weil es einfach ist, mit der Standardbibliothek "Queue" -Klasse selbst zu rollen.

%Vor%

Aber es ist eine gute Frage - ich könnte vorschlagen, es mit Ruby Core zu bringen.

    
rogerdpack 01.10.2010 16:22
quelle
3

Mein Verdacht wäre, dass ein ThreadPool in C-basierten Implementierungen von Ruby nicht so nützlich wäre. Sie können jeweils nur einen Prozessor mit Ruby Interpreter von Matz oder Yet Another Ruby VM verwenden.

Wenn mehrere Threads auf mehreren Prozessoren ausgeführt werden sollen, müssen Sie stattdessen JRuby verwenden.

    
Andrew Grimm 02.10.2010 00:52
quelle

Tags und Links