close

進程要處理某筆檔案資料時,必須從cpu的一級緩存copy到進程(程式)的記憶體位址

所謂阻塞是指,資料還沒準備好,所以整個程式都在等資料傳送好才能進行下一步的動作(如print,而不能先處理別的工作造成很多任務都沒做成浪費時間在等資料傳好

 

如:去餐廳吃飯,都在等餐點來,而不能有效利用時間去shopping等飯好再回來

處理方法:閧多線程(threading,丟一個人(執行緒,一個cpu可能2核4個執行緒)在餐廳等,其他人去shopping)或非阻塞輪詢(先出去,每隔五分鐘回來看餐點好了沒,會造成浪費資源,因為要一直抽離去問`....也就是只用一個執行緒,但這個執行緒可以去做別的事不用一直等,每隔一段時間回來問餐點好了沒

 

 

io非阻塞:

是不斷詢問(輪詢)資料備好沒,

如 linux read指令

read -p 'xxx' a

xxx輸入 55

echo  $a 會print出55

如果xxx是好多好多字或從資料庫或大量txt提出來

就必須等資料都到了才會有下一步的動作

所以read這個指令每隔一段時間不斷的發送

收到error表示還沒好(不會阻塞

就先去做別的事

之後五分鐘又來問

 

 

4

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 學習程式 的頭像
    學習程式

    程式學習日記,如果我幫助了你請讓我知道

    學習程式 發表在 痞客邦 留言(0) 人氣()