2011-09-20 7 views
9

Eksperymentuję z wątkami i włóknami w D i zastanawiałem się, czy można uruchomić Włókna na innym procesorze, gdy główny wątek jest uruchomiony. A jeśli tak nie jest, to jaki byłby powód używania Włókien w stosunku do Nici. (Praktyczne przykłady są bardzo mile widziane)Włókna nad wątkami w D

Próbowałem napisać program początkowy z włóknami, gdzie po pewnym czasie przełączam się na kolejne włókno. Jak zauważyłem, użycie procesora pozostaje tylko w jednym procesorze.

Dokumentacja D stwierdza:

Należy pamiętać, że nie ma wymogu, że włókno jest związany z jednym konkretnego wątku. Zamiast tego, włókna mogą być swobodnie przekazywane między wątkami , o ile nie są obecnie wykonywane.

Czy to oznacza, że ​​muszę podać wątek, aby włókno mogło działać, jeśli chcę, aby używał innego procesora? Jeśli tak jest, to nie widzę celu.

Z góry dziękuję!

Odpowiedz

8

Włókna są lekkim mechanizmem do wielozadaniowości opartej na współpracy i działają w tym samym temacie co ich twórca/dzwoniący. Jeśli chcesz uruchomić zadanie na innym procesorze, użyj wątków. Celem włókien jest zapewnienie szybkiej współpracy przełączania kontekstów i mechanizmów wdrażania wzorców, takich jak coroutines.