Pytałem ich, dlaczego stosuje się włókna i główny deweloper powiedział że łatwiej go do debugowania. Co oznacza, że wie, który wątek ma konkretną funkcję, a nawet może mieć większy dostęp do zmiennych w stosie.
To brzmi wprost osobliwie. Korzystając z biblioteki zadań równoległych z niestandardowymi harmonogramami innymi niż domyślne ThreadPoolTaskScheduler
, możesz sam zdecydować, w jaki sposób zaplanowane są twoje zadania (i niekoniecznie jest to nowe wątki). async-await
z drugiej strony zapewnia wygodny sposób wykonywania asynchronicznego IO. VS daje możliwość debugowania kodu asynchronicznego przy użyciu tak, jakby wykonywał synchronicznie.
Aby używać włókien, należałoby wywołać niezarządzane API, ponieważ .NET nie oferuje żadnych zarządzanych opakowań w BCL. Even the docs of fibers clearly say there isn't a clear advantage to using them:
Ogólnie włókna nie zapewniają korzyści w porównaniu z dobrze zaprojektowanym wielowątkowych aplikacji. Jednak użycie włókien może ułatwić aplikacje portowe, które zostały zaprojektowane do planowania własnych wątków.
Zastanawiałem się, jakie są zalety i wady stosowania Włókna vs użyciu nowego asynchronicznie czekają i korzystania wątki.
Korzystanie z async-await
daje korzyści z wykonywania asynchronicznej pracy związanej z IO, podczas gdy czujesz się jakbyś wykonywał synchronicznie. Biblioteka zadań równoległych zapewnia łatwy sposób planowania pracy z dedykowanymi wątkami, czy to z wątków puli wątków czy nowych wątków, a jednocześnie umożliwia podpięcie się do mechanizmu, który planuje te jednostki pracy. Naprawdę nie widzę żadnej przewagi w korzystaniu z dzisiejszych włókien, z całą strukturą, która ma do zaoferowania.
Myślę, że powinieneś poinformować głównego programistę o przeczytaniu wielowątkowej i asynchronicznej pracy IO przy użyciu zadań biblioteki równoległej i odpowiednio async-await
. Myślę, że ułatwiłoby to życie dla was wszystkich.
Jaką implementację Fibre masz na myśli? [Windows Fibre API] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682661 (v = vs.85) .aspx)? – timmyl
To prawda, że po zatrzymaniu debuggera nie można zobaczyć, co robi aplikacja, ponieważ wszystkie wątki nie robią nic przez większość czasu. To duża wada asynchronicznego IO. Nigdy nie polecałbym jednak włókien. – usr
Włókna są droższe niż zadania. Włókna wymagają 1MB pamięci na stos. Zadania wymagają pamięci dla zmiennych lokalnych, ale używają stosu programu planującego. –