簡體   English   中英

纖維使用案例

[英]Fibers use cases

我正在閱讀很多關於Fibers ,或綠色線程 ,或者我們可以給用戶線程的任何其他名稱。 我開始閱讀文檔和教程(這些是C ++鏈接,但我不需要特定的語言):

但是,似乎我無法掌握纖維的基本要素。 我知道光纖是一種合作多任務的方式,但據我發現,在實際情況下線程和光纖之間相互作用的文檔很少。

什么是纖維的實際用例

例如,每個doc實際上都使用異步I / O作為示例,但是如果我沒有I / O綁定問題怎么辦? 例如,如果我的問題是在一個巨大的文件中計算單詞怎么辦? 在這里,我只是在線程之間拆分文件,光纖可以幫助嗎? 我認為CPU綁定計算(如數值問題(例如矩陣/向量運算))不適合光纖,但同樣,我可能完全錯了。

如果我的問題是在一個巨大的文件中計算單詞怎么辦? ......,纖維能以某種方式幫助嗎?

沒有。

每個doc實際上都使用異步I / O作為示例

異步I / O是當多CPU系統尚未從實驗室中逃脫時線程原本要解決問題。 線程是構建程序的另一種方法,該程序必須等待來自幾個不同的非同步源的輸入,並且必須及時響應這些輸入。

根據它們的實現方式,當時的線程可以是從“大致相同”到“與我們今天所謂的”綠色線程“或”光纖“完全相同”的任何規模。

當多CPU系統進入市場時,線程被視為利用並行處理功能的一種自然而明顯的方式。

與OS線程相比,光纖在創建和上下文切換方面的開銷更低。 因此從理論上講,如果你有一個鎖定阻塞很多的解決方案,你可能會看到光纖的性能提升,因為光纖運行的OS線程將使用更多的分配運行時。 這是因為當光纖阻塞光纖互斥鎖/鎖時,底層OS線程將調用光纖調度程序,該光纖調度程序將運行不同的光纖,所有這些都不需要進行OS線程上下文切換。 這是M:N線程模型背后的基本思想。

另一種情況是,如果您需要創建和銷毀頻率很高或大量的線程。 因為光纖的創建速度更快,並且通常比OS線程更輕,所以你可以使用更大的數量,並且可以實現更細粒度的並行性(理論上)。

一個實際應用是使用actor模型進行基於大代理的模擬。 對於光纖,每個代理/演員都可以在自己的光纖上運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM