【OS】同步非同步/阻塞非阻塞、併發並行序列的區分

TypantK發表於2019-03-30

參考地址:https://blog.csdn.net/qq_23282479/article/details/80424946

 


同步非同步是一種執行緒的操作方式;阻塞非阻塞是執行緒的狀態

同步非同步和阻塞非阻塞,不相同也不衝突

 

同步:主執行緒自己解決這個函式,主執行緒可以以(非阻塞/阻塞)狀態去獲取這個執行緒執行這個函式得到的值

 

非同步把這個函式交給別人來處理,主執行緒可以以(非阻塞/阻塞)狀態去獲取這個執行緒執行這個函式得到的值

 

阻塞:主執行緒等待解決完這個函式才去做別的事

 

非阻塞:如果主執行緒現在做不了這件事或者正在被新開的執行緒執行,可以去做別的事

 

別人問我問題(主執行緒呼叫函式)

 

非阻塞

阻塞

同步

我來解決這個問題

如果我還不能開始解決(沒獲得鎖),我就先去做別的事情

我來解決這個問題

等這個問題解決完才去做別的事情

非同步

我叫一個新執行緒解決這個問題

然後我就去做別的事了,做完了通知我

我叫一個新執行緒解決這個問題

等這個問題解決才去做別的事情

 


併發並行序列都是對多工的不同執行方式

實現任務 --> 呼叫函式

普通解釋:
併發:交替做不同事情的能力
並行:同時做不同事情的能力
專業術語:
併發:不同的程式碼塊交替執行
並行:不同的程式碼塊同時執行

執行吃飯任務的時候來了一個打電話任務

  • 序列執行:執行完吃飯才去打電話
  • 並行執行:可以停下吃飯去打電話,之後再吃飯
  • 併發執行:可以一邊吃飯 一邊打電話

相關文章