We wczesnych inkarnacjach Java używała zielonych wątków i wydajność ich była nawet sporo lepsza od natywnych wątków, per: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.8.9238&rep=rep1&type=pdf Obecnie desktopowe JVMy nie wspierają już zielonych wątków, można je sobie co najwyżej emulować.

Zielonych wątków nie używa się, podając następujące argumenty:

  • ograniczone są do jednego rdzenia,
  • blokada I/O blokuje całą maszynę wirtualną.
    Można to jednak obejść. Można używać asynchronicznego I/O, co wyeliminuje drugi problem. Problem pierwszy może być zaradzony (wtf, nie ma takiego słowa?) poprzez odpalenie tylu natywnych wątków ile jest rdzeni, a potem można tworzyć zielone wątki i przerzucać je na tych kilku natywnych wątkach.

Z tego co na szybko wyczytałem na necie to GHC używa zielonych wątków wraz z "trikami", które opisałem powyżej.

Zielone wątki pozwalają uniezależnić się od przerwań, tzn przełączanie wątków czy procesów można robić całkowicie software'owo. Interesuje mnie to, bo planuję napisać kiedyś własną maszynę wirtualną :)

Ktoś wie czy są jakieś (w miarę) nowe maszyny wirtualne wielowątkowe z zielonymi wątkami i jak stoi ich skalowalność?