同步執行和非同步執行

2021-06-19 22:17:09 字數 1412 閱讀 6458

同步執行模式:

所謂同步執行模式,是指語句在同步執行模式下,將始終保持對程式流的控制,直至 程式結束。如查詢操作,客戶機上的應用程式在向伺服器發出查詢操作的指令後,將 一直等待伺服器將查詢結果返回客戶機端,然後才繼續進行下一步操作。

眾所周知,應用程式要從乙個大表中刪除所有的記錄將是非常耗時的,如果應用程式 採用的是單執行緒(thread)同步執行方式,某次刪除工作很可能耽誤其他重要工作的完 成。如果應用程式等待的是遠端任務,那麼遠端伺服器失敗或網路故障或一些無法預 知的情況都可能使應用程式無限期地等下去,這是同步執行最大的缺陷。

但是同步執行模式可以簡化程式編制的複雜性。程式設計師可以不用過多地了解比較複雜 的odbc 2.0 api 的使用,而只需使用 odbc 的同步執行模式或使用資料控制項和資料庫物件變數來編寫應用程式,可以提高開發效率,但程式執行速度比不上非同步執行 模式的速度。

非同步執行模式:

所謂非同步執行模式,是指語句在非同步執行模式下,各語句執行結 束的順序與語句執行開始的順序並不一定相同。例如 查詢操作,客戶機上的應用程式在向伺服器發出了查 詢操作的指令後,將立刻執行查詢語句指令的下一條 語句,而不需要等到伺服器將查詢結果返回客戶機端。 非同步執行方式使應用程式能擺 脫單個任務的牽制,提高了靈活性和應用程式的執行 效率。但非同步執行模式也存在一些問題,如它增加了 程式設計的複雜性,特別是編寫互用性(interoperable)要求較高 的程式。

在負荷很重的客戶/伺服器系 統中,適宜採用非同步執行模式。在這種環境下,時間 延遲頻繁且漫長,相比之下非同步執行的開銷微不足 道。但是,如果應用執行的環境比較複雜,則必須建 立一套完整的機制,周期性地檢查函式執行的狀態, 以決定下一步執行方案。進行週期的檢查可以有多種方法,如在 應用中設定計時器並處理wm_timer資訊等。

雖然使用非同步執行模式在程式設計 序時十分複雜,但可以實現多工並行執行,使執行的效率大大提高。

選擇並設定執行模式 在應用程式開發中選擇同步模式還是非同步模式,是乙個比 較複雜的層次。當查詢或對資料庫的修改相對簡單時,同步執行模式是一種 很好的選擇,它能夠在幾秒 或更少的時間內返回結果資料。另外,在應用程式獲 得結果集前不能繼續執行時,根本不必要使用非同步執 行模式。在複雜查詢情況下,特別是複雜的多行資料 庫的update 或delete 操作,可能需要很長的時間才能完成, 需採用非同步執行模式,讓使用者可以同時對程式的其他 部分進行操作。

對於一般程式設計師來說,如果他對同步執行模式與非同步執行模式不了解, 他往往會在對伺服器發出乙個操作語句(查詢或讀取一條記錄等 操作)後,立該引用伺服器返回的執行結果,或者對該 結果進行下一步操作,這是很危險的。因為,在非同步 執行模式下,客戶機上的後續語句是在該操作語句發 出後接著執行的,但由於各種原因,伺服器不一定能 執行完該操作語句,並在後續語句執行前將結果返回 客戶機。因此,後續語句在引用前一操作語句的執行 結果時,往往會因為該執行結果並不存在而引用了錯 誤的值,造成系統錯誤或死鎖,所以在實際應用中應 根據具體情況慎重選擇執行模式。

jquery ajax 同步非同步的執行

大家先看一段簡單的 jquery ajax 返回值的js function getreturnajax else 但是我們呼叫這個 getreturnajax 發現始終取得的都是 false,那就是說 return true,return false 根本沒有起作用,在火狐下用 firebug 除錯...

jquery ajax 同步非同步的執行

大家先看一段簡單的jquery ajax 返回值的js function getreturnajax else 但是我們呼叫這個getreturnajax 發現始終取得的都是false,那就是說return true,return false根本沒有起作用,在火狐下用firebug除錯也證明,根本不...

jquery ajax 同步非同步的執行

大家先看一段簡單的jquery ajax 返回值的js function getreturnajax else 但是我們呼叫這個getreturnajax 發現始終取得的都是false,那就是說return true,return false根本沒有起作用,在火狐下用firebug除錯也證明,根本不...