2008-09-29 20 views

Odpowiedz

12

Tak, w większości przypadków. MRI (1.8) wsparło je tak długo, jak sięga moja pamięć, Ruby 1.9 (YARV) does it, too, podobnie jak Rubinius. JRuby i IronRuby nie mają kontynuacji i jest to raczej mało prawdopodobne, że je otrzymają (JVM i CLR używają wbudowanej inwentaryzacji dla bezpieczeństwa).

Ruby jako język obsługuje kontynuację za pomocą słowa kluczowego callcc. Są one używane na przykład do implementacji klasy Generator ze standardowej biblioteki.

continuations on ruby-doc

Kontynuacja opartej ram internetowych (jak nad morzem, lub jeden z dokumentacją techniczną. Biblioteki Arc) wydają się mniej popularne. Znalazłem wee roszczenie, by umożliwić ci opcjonalne kontynuacje, ale nigdy go nie używałem.

6

Jak już powiedzieli inni, Ruby 1.8 obsługuje kontynuacje.

Ruby 1.9 nie obsługuje ich jeszcze przez jakiś czas. Zostały one dodane w tym roku przez jakiś czas, ale większość innych tłumaczy Ruby (JRuby, IronRuby itp.) Nie obsługuje ich.

Jeśli chcesz, aby twój kod mógł być użyty na innych platformach niż główny Ruby, sugerowałbym nie używać ich.

Przeczytaj this InfoQ article, aby uzyskać bardziej wyczerpującą dyskusję na ten temat.

1

neverblock używa 1,9 włókien dla pojedynczego gwintowanego serwera WWW rubin

2

Przy okazji this jest przykładem restartowalnym wyjątków (czyli warunków), realizowane za pomocą kontynuacje. Używałem go kilka razy i fajnie jest mieć w zestawie narzędzi Ruby.