Afish napisał(a):
hauleth napisał(a):
Tak, tylko to wymaga runtime, którego Rust stara się unikać. Dodatkowo przywiązuje ciebie do jednej implementacji asynchroniczności.
Ani jedno, ani drugie. Da się to zrobić na samej bibliotece standardowej (i nie trzeba mieć wsparcia systemu operacyjnego), ponadto może być wiele implementacji.
Gdy scheduling odbywa się bez wsparcia kompilatora bądź runtime, to obowiązek wywłaszczania rutyn spada na dewelopera. W takim wypadku wywołanie blokującej funkcji systemowej uśpi cały wątek, nieważne czy są inne rutyny, które mogłyby z niego skorzystać.
Gdy na ścieżce wywołania systemowego znajduje się scheduler rutyn, to takich sytuacji można uniknąć i przydzielić wątek innej rutynie. Owszem, dałoby się to zrobić tylko przy pomocy biblioteki, pod warunkiem, że wszystkie wywołania systemowe (oraz funkcje, które pośrednio z nich korzystają), także te dodane przez użytkowników bibliotek zewnętrznych, będą wywoływały scheduler. Pytanie, czy można w takim wypadku mówić braku wsparcia runtime.