Wątki vs Gorutyny

Odpowiedz Nowy wątek
2019-08-29 21:03
0

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

Czy tylko ja przeczytałem tytuł "Majtki Grażyny"? - PerlMonk 2019-08-30 11:10
Tylko Ty. Jakkolwiek, Zenobiusz D. zamieszkały w Prabutach przeczytał "Nie mamy garba", ale on czytał inne forum i ma na imię Krzysztof. - jarekr000000 2019-08-30 13:22

Pozostało 580 znaków

2019-08-29 21:31
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.


edytowany 3x, ostatnio: Patryk27, 2019-08-29 23:16
Pomieszałeś - jest odwrotnie. Gorutyny to cooperative multitasking, a systemowe wątki to preemptive multitasking. - Wibowit 2019-08-29 23:13
Whoops, masz ofkors rację - git patch już w drodze. - Patryk27 2019-08-29 23:16
Z punktu widzenia programisty to goroutines również są wywłaszczające, dla tego może to wprowadzać zamieszanie. - hauleth 2019-08-30 14:00
Wywłaszczanie następuje tylko w safepoints, które wstawia kompilator Go. Jeśli kod utknie w miejscu, gdzie nie ma safepoints to nie będzie wywłaszczania. Ponadto Java też ma safepoints i wywłaszczanie wątków, ale nie po to by je przełączać, a po to by np wstrzymać wątek, by GC mógł przeskanować stos. - Wibowit 2019-08-30 17:18

Pozostało 580 znaków

2019-08-30 11:06
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.

Pozostało 580 znaków

2019-08-30 14:14
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 :/


Wydaje mi się, że koncept N:M jest jeszcze starszy niż Erlang. - hauleth 2019-08-30 14:22
@hauleth: możesz rozwinąć, bo w takiej postaci tego nie wygooglam? - Kamil Żabiński 2019-08-30 14:25
IMO coroutines (goroutines) !== WebWorkery - inna koncepcja zupełnie - no_solution_found 2019-08-30 14:33

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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