程式設計中的同步和非同步??什麼是同步程式設計 非同步程式設計??

2025-07-28 03:41:47 字數 2564 閱讀 1127

1樓:似笑非笑

以ajax的xmlhttp物件來舉例 比如先呼叫open方法來讀取乙個頁面上的資源。然後 open方法後面 再寫乙個呼叫 alert("aa") 的方法 那麼 如果是非同步的 open 之後 並不管什麼時候讀取完畢 直接繼續做後面的。 而 同步的話 就是要等請求完畢 才繼續執行後面的方法。

什麼是同步程式設計、非同步程式設計??

2樓:四舍**入

同步程式設計:傳統的同步程式設計是一種請求響應模型,呼叫乙個方法,等待其響應返回。就是 乙個執行緒獲得了乙個任務,然後去執行這個任務, 當這個任務執行完畢後,才能執行接下來的另外乙個任務。

非同步程式設計:非同步程式設計就是要重新考慮是否需要響應的問題,也就是縮小需要響應的地方。因為越快獲得響應,就是越同步化,順序化,事務化,效能差化,非同步程式設計通常是通過fire and forget方式實現。

3樓:包布丁

我們知道,在一般的程式語言中,如果沒有特殊處理,**都是以同步方式進行的。通俗講就是「乙個接乙個」,每個操作都在上乙個操作完成之後完成。

如果你寫過窗體應用程式,可能會碰到這樣乙個情況:直接在窗體事件函式中跑io操作、網路操作或耗cpu大的操作時,窗體會出現明顯的卡頓現象。原因在於窗體的訊息迴圈被耗時的操作停住了,不能響應使用者。

這就是同步程式設計的缺點,操作直接會有阻塞。

非同步就能很好地解決這個問題。通常我們實現非同步採用的方法是多執行緒。

顯而易見,這樣做的好處就在於操作之間不會互相堵塞。比如,你可以在窗體上放乙個載入中的動畫,而另乙個執行緒做一些耗時的工作。但由於其模型的特殊性,程式設計時可能會有一定難度,初學者一下子可能不好掌握。

當然,熟練之後,你就會發現非同步程式設計的好處。

補充一些:在c#中,普通的非同步方法都以async結尾,通常含有非同步方法的物件中都會有響應的完成、進度改變和錯誤事件以供呼叫,只需繫結事件即可。

c# 中引入了await和async兩個關鍵字,它們使得非同步變得跟簡單。

4樓:網友

同步就是要等待方法的返回,非同步就是方法執行過後立即返回,操作真正完成時會有事件發生。

5樓:網友

你的問題是:程式設計同步通訊和程式設計上的非同步通訊吧?

j**a中同步和非同步有什麼異同?

6樓:網友

同步就是乙個個輪流去執行。

非同步就是一起同時併發。

7樓:盜古墓魔杖

同步非同步指的是方法的呼叫。同步是請求後處理完畢才能進行下乙個操作,而非同步是提出請求後可以進行其他操作。

舉個例子,打**讓朋友幫你做個專案,同步的話你就一直拿著**等待朋友做完了告訴你結果再掛了**幹別的事情,非同步是你打**告訴朋友幫忙做個專案,然後就掛了**幹其他的事情,然後朋友做完了再打**告訴你結果。

程式設計中非同步io和同步io有什麼區別

8樓:小缺閉風

非同步檔案io也就是重疊io。

在同步檔案io中,執行緒啟動乙個io操作然後就立即進入等待狀態,直到io操作完成後才醒來繼續執行。而非同步檔案io方式中,執行緒傳送乙個io請求到核心,然後繼續處理其他的事情,核心完成io請求後,將會通知執行緒io操作完成了。

如果io請求需要大量時間執行的話,非同步檔案io方式可以顯著提高效率,因為**程等待的這段時間內,cpu將會排程其他執行緒進行執行,如果沒有其他執行緒需要執行的話,這段時間將會浪費掉(可能會排程作業系統的零頁執行緒)。如果io請求操作很快,用非同步io方式反而還低效,還不如用同步io方式。

同步io在同一時刻只允許乙個io操作,也就是說對於同乙個檔案控制代碼的io操作是序列化的,即使使用兩個執行緒也不能同時對同乙個檔案控制代碼同時發出讀寫操作。重疊io允許乙個或多個執行緒同時發出io請求。

程式非同步和同步有何區別

9樓:匿名使用者

同步是指必須完成當前事件才能執行其他。

非同步是指當前事件在執行中我可以等待並且執行其他事件。

對程式同步執行和非同步執行還是沒有分清楚

10樓:鄭州鑫亞廣告

一、你給了狗乙個包子, 然後就走開做別的事去了, 過後狗追過來對你說了聲謝謝,或者咬了你一口說,包子有毒。 這是非同步。

二、同樣你給了狗乙個包子後,看著狗把包子吃完,並對你搖尾巴,這個期間你一點別的事都不做,就等著狗吃完包子。 這是同步。

11樓:網友

早上煮早餐,先煮雞蛋再煮牛奶,這是同步,開兩個爐子,乙個煮雞蛋乙個煮牛奶,不**的非同步,雞蛋和牛奶可沒辦法通知你:「喂傻瓜,我熟了!」

j**a中非同步處理和同步處理分別是什麼意思?

12樓:千鋒教育

舉個例子:a和b一起從某點出發到終點。

同步就是隻能a走完某一段然後停下,讓b開始走一段再停下,再讓a走。如此往復。簡單理解就是,必須是一段程式執行完後才能執行後面的程式。

非同步就是,同一時間可能a和b同時都在往終點趕,此時不存在先後順序,就是說,兩個程式可以同時執行,稱為非同步。

網路程式設計裡的同步和非同步有啥區別的

網路程式設計中,同步的意思是說,進行收發資料,等到資料真正傳送出去或者接受到,才返回 而非同步的意思是,可以把資料傳送到緩衝區立即返回,而傳送成功的訊息是通過事件通知的。非同步可以騰出更多的cpu來處理其他事情,所以非同步的方式比較靈活。執行緒同步是指,多個執行緒協同完成一件工作,一個執行緒需要等待...

頁面同步呼叫和非同步呼叫的區別

假設你頁面要做三件事,a,b,c,同步呼叫的方式一般就是做完a後做b,做完b後再做c,而非同步呼叫則是,開始做a時,不等a做完,你就可以開始做b,不等b做完,就開始做c。假如三件事都要耗時5s中,這時同步的話最少需要做15s才能完成,而非同步的話,最少可能5s就完成了,所以非同步效率是比較高的。但這...

手機中的《賬戶與同步》是什麼意思

可以儲存到雲端,當你手機資料丟失或者換手機的話,登陸之前的帳號同步以後 號碼,簡訊,通訊記錄 什麼的可以恢復 具體內容要看你之前同步了哪些東西 相當於備份了一下。手機上的帳戶與同步是什麼意思?手機在聯網狀態下,軟體會自動更新,建議你把這個功能關閉,避免產生不必要的流量費用。你好!設定同步的話就是你手...