回覆列表
  • 1 # 使用者9884621286556

    假如說現在有下面四個問題:

    1+1=a,1+2=b,2+3=c,4+5=d

    單執行緒就是一個接一個的計算:

    第一步:1+1=2,第二步:1+2=3,第三步:2+3=5,第四步:4+5=9

    然後告訴你結果:

    a=2, b=3, c=5, d=9

    多執行緒,咱們就說四執行緒吧,就是同時計算四個問題:

    第一步:

    執行緒一:1+1=2

    執行緒二:1+2=3

    執行緒三:2+3=5

    執行緒四:4+5=9

    然後告訴你結果:

    a=2, b=3, c=5, d=9

    可見,多執行緒可以同時處理多個計算,計算能力似乎是成倍成比例上漲的,但是它有一個問題就是多個運算必須獨立,比如:

    1+2=a,a+3=b

    這種計算,你不知道a就沒法計算b,這種情況下就沒辦法多執行緒計算了。

    再就是“競爭狀態”:

    就是說多個執行緒互相等待對方結束,或者等待對方釋放資源。單執行緒的話所有的操作一定會是一個接一個的完成,所以不存在這個狀況。但如果多執行緒的話,排程沒有做好就很容易發生這種事情,比如不小心同時運行了本不應該同時執行的兩個執行緒,或者其中一個執行緒沒有在預定時間內結束就啟動了第二個執行緒。

    單執行緒的好處就是易於程式設計,不需要考慮太多狀況,缺點是效率低。

    多執行緒的好處是效率高,效能高,但是不是所有的運算都可以被並行化,而且容易出現各種意外的稀奇古怪的bug。

  • 中秋節和大豐收的關聯?
  • 你與女朋友分手後,還有聯絡或者發生過什麼事嗎?