2011-09-20 9 views
9

Sto sperimentando thread e fibre in D e mi chiedevo se è possibile eseguire una fibra su una CPU diversa mentre il thread principale è in esecuzione. E se questo non è il caso, quale sarebbe il motivo dell'utilizzo di Fibers over Threads. (Esempi pratici sono i benvenuti)Fibre su fili in D

Ho provato a scrivere un programma iniziale con Fibers, in cui passerò alla fibra successiva dopo un po 'di tempo. Howhever ho notato che l'utilizzo della CPU rimane solo su una CPU.

La documentazione di D afferma:

prega di notare che non v'è alcun obbligo che una fibra essere associato a uno thread specifico. Piuttosto, le fibre possono essere passate liberamente tra i fili fintanto che non sono attualmente in esecuzione.

Ciò significa che devo fornire un thread per l'esecuzione della fibra se voglio che utilizzi una CPU diversa? Se questo è il caso, allora non vedo lo scopo.

Grazie in anticipo!

risposta

8

Le fibre sono un meccanismo leggero per il multitasking cooperativo e vengono eseguite nella stessa thread del loro creatore/chiamante. Se è necessario eseguire un'attività su una CPU diversa, utilizzare i thread. Lo scopo delle fibre è quello di fornire rapidi cambiamenti di contesto cooperativo e meccanismi per implementare modelli come le coroutine.