Wątek przeniesiony 2021-09-16 09:48 z Inne języki programowania przez cerrato.

Wątki vs Gorutyny

0

Cześć. Mam pytanie, w jaki sposób gorutyny tworzą współbieżność skoro nie korzystają z wątków?

3

Istnieją dwa rodzaje współbieżności: cooperative multitasking oraz preemptive multitasking.

Go wykorzystuje ten pierwszy, podczas gdy typowe systemowe wątki zazwyczaj oparte są o drugi - przy czym obydwa realizują ten sam cel (współbieżność), jedynie w inny sposób.

0

Ogólnie, to sprawa wygląda tak, że jest scheduler, który każdemu z kontekstów daje X czasu na wykonanie swojego zadania. Po tym X czasie (z czego pamiętam to jest to 1 milisekunda) sprawdza czy goroutine się skończyła. Jeśli nie, to odkłada sobie ją na bok i leci z kolejną goroutine. Jeśli ma 1 wątek, to robi to na 1 wątku; jak więcej to więcej :) dlatego jest to takie lekkie.

0

Gorutyny w Go, Coroutines w Kotlinie, WebWorkery w JS, Fiber w Scali (Cats, Scalaz, ZIO) i wisienka na torcie, która to prawdopodobnie zapoczątkowała, czyli procesy w Erlangu.
Przydałby się jakiś rząd światowy, który by ustandaryzował to nazewnictwo :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1