同步函式與非同步函式

2021-07-10 01:42:44 字數 736 閱讀 5078

什麼是同步函式?

什麼是非同步函式?

乙個執行緒如何與乙個非同步執行的函式進行同步?

什麼是同步函式與非同步函式?

依據微軟的msdn上的解說:

(1)   同步函式:當乙個函式是同步執行時,那麼當該函式被呼叫時不會立即返回,直到該函式所要做的事情全都做完了才返回。

(2) 非同步函式:如果乙個非同步函式被呼叫時,該函式會立即返回儘管該函式規定的操作任務還沒有完成。

在乙個執行緒中分別呼叫上述兩種函式會對呼叫執行緒有何影響呢?

當乙個執行緒呼叫乙個同步函式時(例如:該函式用於完成寫檔案任務),如果該函式沒有立即完成規定的操作,則該操作會導致該呼叫執行緒的掛起(將cpu的使用權交給系統,讓系統分配給其他執行緒使用),直到該同步函式規定的操作完成才返回,最終才能導致該呼叫執行緒被重新排程。

當乙個執行緒呼叫的是乙個非同步函式(例如:該函式用於完成寫檔案任務),該函式會立即返回儘管其規定的任務還沒有完成,這樣執行緒就會執行非同步函式的下一條語句,而不會被掛起。那麼該非同步函式所規定的工作是如何被完成的呢?當然是通過另外乙個執行緒完成的了啊;那麼新的執行緒是**來的呢?可能是在非同步函式中新建立的乙個執行緒也可能是系統中已經準備好的執行緒。

乙個呼叫了非同步函式的執行緒如何與非同步函式的執行結果同步呢?

我們是否已經發現了乙個有趣的地方呢?!就是我們可以使用等待函式將乙個非同步執行的函式封裝成乙個同步函式。

同步與非同步的區別,同步函式與非同步函式的區別

同步的概念應該是來自與os中關於同步的概念 不同程序為協同完成某項工作而在先後次序上調整 通過阻塞,喚醒等方式 同步強調的是順序性,誰先誰後,非同步則不存在這種順序性 同步 瀏覽器訪問伺服器請求,使用者看得到頁面重新整理,重新發請求,等請求完,頁面重新整理,新內容出現,使用者看到新內容,進行下一步操...

同步與非同步

同步執行模式 所謂同步執行模式,是指語句在同步執行模式下,將始終保持對程式流的控制,直至 程式結束。如查詢操作,客戶機上的應用程式在向伺服器發出查詢操作的指令後,將 一直等待伺服器將查詢結果返回客戶機端,然後才繼續進行下一步操作。眾所周知,應用程式要從乙個大表中刪除所有的記錄將是非常耗時的,如果應用...

同步與非同步

同步與非同步 所謂同步就是乙個任務的完成需要依賴另外乙個任務時,只有等待被依賴的任務完成後,依賴的任務才能算完成,這是一種可靠的任務序列。要麼成功都成功,失敗都失敗,兩個任務的狀態可以保持一致。而非同步是不需要等待被依賴的任務完成,只是通知被依賴的任務要完成什麼工作,依賴的任務也立即執行,只要自己完...