2011-09-20 44 views
9

我正在D中嘗試線程和光纖,我想知道是否可以在主線程運行時在不同的CPU上運行光纖。如果情況並非如此,那麼使用Fibers over Threads的原因是什麼? (實際的例子非常受歡迎)D中的線程中的光纖

我試圖用光纖寫一些初始程序,在一段時間後我切換到下一個光纖。無論我注意到CPU使用率只保留在一個CPU上。

d的文檔指出:

請注意,不要求光纖被綁定到一個特定 線程。相反,纖維可以在線程 之間自由傳遞,只要它們當前沒有執行。

這是否意味着我必須爲光纖運行提供一個線程,如果我希望它使用不同的CPU?如果是這種情況,那麼我看不到目的。

在此先感謝!

回答

8

纖維是合作多任務的輕量級機制,並且與其創建者/調用者在同一線程中運行。如果您需要在不同的CPU上運行任務,請使用線程。光纖的目的是提供快速協作的上下文切換和實現諸如協同程序之類的模式的機制。