操作系統(tǒng)中的同步和異步有什么區(qū)別?分別應(yīng)用在什么場合?
時間:2018-10-14 00:00:00
來源:信盈達
作者:信盈達
同步,就是說你的程序在執(zhí)行某一個操作時一直等待直到操作完成。 最常見的例子就是 SendMessage。該函數(shù)發(fā)送一個消息給某個窗口,在對方處理完消息之前,這個函數(shù)不返回。當(dāng)對方處理完畢以后,該函數(shù)才把消息處理函數(shù)所返回的 LRESULT值返回給調(diào)用者。
異步,就是說程序在執(zhí)行某一個操作時,只是發(fā)出開始的指令;由另外的并行程序執(zhí)行這段代碼,當(dāng)完成時再通知調(diào)用者。 當(dāng)一個客戶端通過調(diào)用 Connect函數(shù)發(fā)出一個連接請求后,調(diào)用者線程立刻可以朝下運行。當(dāng)連接真正建立起來以后,socket底層會發(fā)送一個消息通知該對象。
打個比喻:
有一個男的 看上了兩個漂亮MM 想通過寫信的方式跟他們交流感情 這兩個MM分別是 A女、B女
同步:他先給A女寫了封信 然后發(fā)了出去。等了好幾天 A女給他回了信,之后他才給B女寫信。就是說等到一個任務(wù)返回或者結(jié)束 他才繼續(xù)往下做他想做的任務(wù)。
異步:他先給A女寫了封信,然后發(fā)了出去,馬上又給B女寫了封信 也發(fā)了出去。 就是說不用等到一個任務(wù)結(jié)束就去做下一個任務(wù)。
但是如果第一個任務(wù)需要第二個任務(wù)的返回值 那就得用同步讓第一個任務(wù)等待第二個任務(wù)結(jié)束后,獲取第二個任務(wù)的返回值,在繼續(xù)往下做。
并行:兩個帥哥同時給這兩個妹妹寫信。
同步和異步的簡單區(qū)別:
舉個例子:普通B/S模式(同步)AJAX技術(shù)(異步)
同步:提交請求->等待服務(wù)器處理->處理完畢返回 這個期間客戶端瀏覽器不能干任何事
異步: 請求通過事件觸發(fā)->服務(wù)器處理(這是瀏覽器仍然可以作其他事情)->處理完畢
-----------------------------------------------------------------
同步就是你叫我去吃飯,我聽到了就和你去吃飯;如果沒有聽到,你就不停的叫,直到我告訴你聽到了,才一起去吃飯。
異步就是你叫我,然后自己去吃飯,我得到消息后可能立即走,也可能等到下班才去吃飯。
所以,要我請你吃飯就用同步的方法,要請我吃飯就用異步的方法,這樣你可以省錢。
-----------------------------------------------------------------
舉個例子:打電話是同步,發(fā)消息是異步。