Jestem ciekawa, w jaki sposób język Go planuje goroutines. Czy przełącza się tylko podczas żądania kanału i we/wy lub czy ma okresową pętlę przełączania?Jak Go decyduje, kiedy przejść do kontekstu między goroutinami?
6
A
Odpowiedz
8
Go nie ma jeszcze harmonogramu zapobiegawczego, ale jeden to planned for 1.2. Więc nie, Go nie zmieni kontekstu tylko podczas obliczeń tylko z CPU, tylko podczas I/O (odczyt z pamięci jest także uważany za I/O, jeśli nie jest już w rejestrze). Możesz przeczytać o tym w Issue 543 - preemptive scheduling.
Powiązane problemy
- 1. jQuery: jak przejść między klasami?
- 2. Jak mogę sprawdzić, kiedy UIWebView zakończyło rysowanie do kontekstu?
- 3. Aplikacja CLR nie może przejść z kontekstu COM 0x3b2d70 do kontekstu COM
- 4. Jak przejść do facebooka
- 5. Analizator gramatyki bez kontekstu (Googge) w Go
- 6. zmienne przejść między różnymi .js
- 7. CLR nie może przejść z kontekstu COM [...] przez 60 sekund.
- 8. Przejść do konwersji między tablicą struktury i bajtu
- 9. Czy kompilator decyduje, kiedy wprowadzić moje funkcje (w C++)?
- 10. Kiedy wskaźniki Go dereference sami
- 11. VIM, wyszukiwanie przyrostowe: Jak mogę przejść do następnego wyniku i wyróżnić go?
- 12. Kiedy opróżnić plik w Go?
- 13. Jak przejść do importowania PyCharm?
- 14. symfony2 - jak przejść z "dev" do "prod"?
- 15. W jaki sposób Hive decyduje, kiedy korzystać z mapy, a kiedy nie?
- 16. Jak przekazać treść żądania do kontekstu GraphQL?
- 17. Jak przejść do okna dialogowego modalnego?
- 18. Czy struktura jest faktycznie kopiowana między goroutinami, jeśli została wysłana przez kanał Golang?
- 19. Udostępnianie kontekstu bezpieczeństwa między kilkoma aplikacjami WWW
- 20. Jak powiedzieć ogórek przejść do strony?
- 21. W jaki sposób Visual Studio decyduje, kiedy i jak przebudować IntelliSense?
- 22. Rozpoczęcie tworzenia niestandardowych przejść między widokami
- 23. C# USING keyword - kiedy i kiedy go nie używać?
- 24. Jak przejść do żądania ściągnięcia na github?
- 25. Go: Kiedy zostanie wyświetlony błąd powrotu json.Unmarshal do struct?
- 26. Jak zainstalować serwlet w kontenerze tomcat i załadować go do kontekstu każdej aplikacji internetowej?
- 27. Jak przejść z UICollectionView do UIViewController takich jak Pinterest/Evernote
- 28. po przekazaniu strumienia do CommandGet, kiedy można go zwolnić?
- 29. Nie można niejawnie przekształcić typu "X" na "ciąg" - kiedy i jak decyduje, że "nie może"?
- 30. Kalendarz dodać() vs roll(), kiedy go używamy?
Jeśli dobrze rozumiem, wywoływanie tego, co jest opisane w "Zapobiegawczym harmonogramie" tych linków, jest zbyt daleko idące. To nie jest tak naprawdę prewencyjne, tylko że plony są umieszczane w większej liczbie miejsc, niewidocznie dla programisty. Oczywiście, dzięki temu program jest bardziej "współbieżny", ale nadal współpracuje. Myślę, że niemożliwe jest wykonywanie wielozadaniowości zapobiegawczej bez użycia specjalnej maszyny wirtualnej (np. Erlang) lub bez bezpośredniego wsparcia systemu operacyjnego (wątki systemu operacyjnego). –
Czy możesz zaktualizować swoją odpowiedź? Słyszałem, że Go był w stanie uprzedzać od czasu do czasu wywołania funkcji, ale nie wiem na pewno. –