同步與異步的概念

進程同步用來實現程序并發執行時候的可再現性。

一.進程同步及異步的概念

1.進程同步:就是在發出一個功能調用時,在沒有得到結果之前,該調用就不返回。也就是必須一件一件事做,等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃飯,不能在洗涮沒有完成時,就開始吃飯.按照這個定義,其實絕大多數函數都是同步調用(例如sin,isdigit等)。但是一般而言,我們在說同步、異步的時候,特指那些需要其他部件協作或者需要一定時間完成的任務。最常見的例子就是

sendmessage。該函數發送一個消息給某個窗口,在對方處理完消息之前,這個函數不返回。當對方處理完畢以后,該函數才把消息處理函數所返回的lresult值返回給調用者。

2.異步

異步的概念和同步相對。當一個異步過程調用發出后,調用者不能立刻得到結果。實際處理這個調用的部件在完成后,通過狀態、通知和回調來通知調用者。

以casycsocket類為例(注意,csocket從casyncsocket派生,但是其功能已經由異步轉化為同步),當一個客戶端通過調用connect函數發出一個連接請求后,調用者線程立刻可以朝下運行。當連接真正建立起來以后,socket底層會發送一個消息通知該對象。

這里提到執行部件和調用者通過三種途徑返回結果:狀態、通知和回調。可以使用哪一種依賴于執行部件的實現,除非執行部件提供多種選擇,否則不受調用者控制。如果執行部件用狀態來通知,那么調用者就需要每隔一定時間檢查一次,效率就很低(有些初學多線程編程的人,總喜歡用一個循環去檢查某個變量的值,這其實是一種很嚴重的錯誤)。如果是使用通知的方式,效率則很高,因為執行部件幾乎不需要做額外的操作。至于回調函數,其實和通知沒太多區別。

進程同步的基本概念

在計算機系統中,由于資源有限而導致了進程之間的資源競爭和共享,因此,進程的并發執行不僅僅是用戶程序的執行開始時間的隨機性和提高資源利用率的結果,也是資源有限性導致資源的競爭與共享對進程的執行過程進行制約所造成的。那么,在進程的并發執行過程中存在哪些制約呢?

二.同步與異步傳輸:

1.異步傳輸

通常,異步傳輸是以字符為傳輸單位,每個字符都要附加?1?位起始位和?1?位停止位,以標記一個字符的開始和結束,并以此實現數據傳輸同步。所謂異步傳輸是指字符與字符(一個字符結束到下一個字符開始)之間的時間間隔是可變的,并不需要嚴格地限制它們的時間關系。起始位對應于二進制值0,以低電平表示,占用?1?位寬度。停止位對應于二進制值?1,以高電平表示,占用?1~2?位寬度。一個字符占用?5~8位,具體取決于數據所采用的字符集。例如,電報碼字符為?5?位、ASCII碼字符為?7?位、漢字碼則為8?位。此外,還要附加?1?位奇偶校驗位,可以選擇奇校驗或偶校驗方式對該字符實施簡單的差錯控制。發送端與接收端除了采用相同的數據格式(字符的位數、停止位的位數、有無校驗位及校驗方式等)外,還應當采用相同的傳輸速率。典型的速率有:9 600 b/s、19.2kb/s、56kb/s等。

異步傳輸又稱為起止式異步通信方式,其優點是簡單、可靠,適用于面向字符的、低速的異步通信場合。例如,計算機與Modem之間的通信就是采用這種方式。它的缺點是通信開銷大,每傳輸一個字符都要額外附加2~3位,通信效率比較低。例如,在使用Modem上網時,普遍感覺速度很慢,除了傳輸速率低之外,與通信開銷大、通信效率低也密切相關。

2.?同步傳輸

通常,同步傳輸是以數據塊為傳輸單位。每個數據塊的頭部和尾部都要附加一個特殊的字符或比特序列,標記一個數據塊的開始和結束,一般還要附加一個校驗序列?(如16位或32位CRC校驗碼),以便對數據塊進行差錯控制。所謂同步傳輸是指數據塊與數據塊之間的時間間隔是固定的,必須嚴格地規定它們的時間關系。

三.同步阻塞與異步阻塞:

同步是阻塞模式,異步是非阻塞模式。?

我的理解:同步是指兩個線程的運行是相關的,其中一個線程要阻塞等待另外一個線程的運行。異步的意思是兩個線程毫無相關,自己運行自己的。?

同步是指:發送方發出數據后,等接收方發回響應以后才發下一個數據包的通訊方式。?

異步是指:發送方發出數據后,不等接收方發回響應,接著發送下個數據包的通訊方式。?

舉個不太恰當的例子,就像:?

SendMessage(...)?

TRACE0("just??like??send");?

PostMessage(...)?

TRACE0("just??like??WSASend??using??overlapped");?

?SendMessage是調用的時候不返回,等消息響應后才執行TRACE0,這就是同步.?

PostMessage是調用后馬上返回,不用消息響應就執行TRACE0,這就是異步.

四.其它解釋:

?同步和異步的區別

?舉個例子:普通B/S模式(同步)AJAX技術(異步)

同步:提交請求->等待服務器處理->處理完畢返回?這個期間客戶端瀏覽器不能干任何事

異步:?請求通過事件觸發->服務器處理(這是瀏覽器仍然可以作其他事情)->處理完畢

同步就是你叫我去吃飯,我聽到了就和你去吃飯;如果沒有聽到,你就不停的叫,直到我告訴你聽到了,才一起去吃飯。

異步就是你叫我,然后自己去吃飯,我得到消息后可能立即走,也可能等到下班才去吃飯。

所以,要我請你吃飯就用同步的方法,要請我吃飯就用異步的方法,這樣你可以省錢。

舉個例子?打電話時同步?發消息是異步

?

參考:http://blog.chinaunix.net/uid-21411227-id-1826898.html

轉載于:https://www.cnblogs.com/H-BolinBlog/p/5480829.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373072.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373072.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373072.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

編寫Play 2的模塊,第1部分:使工作正常

幾周前,我遷移了Play! 框架 1.x版本的Deadbolt應用于Play 2平臺,并且對缺少有關創建模塊的信息感到驚訝。 Play 1.x文檔中詳細介紹了該主題,這使得創建模塊非常簡單。 顯然,需要做些事情-這是關于為Play 2創建模塊和插…

Dotnet Core

Global Exceptionhttp://www.talkingdotnet.com/global-exception-handling-in-aspnet-core-webapi/轉載于:https://www.cnblogs.com/zwheui/p/6339692.html

交友系統設計:哪種地理空間鄰近算法更快?

小熊學Java:https://javaxiaobear.cn 交友與婚戀是人們最基本的需求之一。隨著互聯網時代的不斷發展,移動社交軟件已經成為了人們生活中必不可少的一部分。然而,熟人社交并不能完全滿足年輕人的社交與情感需求,于是陌生人交友平臺…

linux ntp 'ntp_request.c'遠程拒絕服務漏洞,NTP 'ntp_request.c'遠程拒絕服務漏洞

NTP ntp_request.c遠程拒絕服務漏洞發布日期:2013-12-30更新日期:2014-01-09受影響系統:NTP NTP 描述:--------------------------------------------------------------------------------BUGTRAQ ID: 64692CVE(CAN) ID: CVE-20…

指針的內容 ; 指針的地址 指針所指向的內容 指針的類型 指針所指向的類型...

這幾個個東東很具有迷惑性。 int a10; //假設a的地址是 0x0000004C int *p; //假設p的地址是 0x0035FA94 p&a; 指針的內容:指針里面存放的是地址。 指針p里面存放的是a的地址(&a)。即指針p里面存放的內容是0x0000004C。 指針的地址&#xff…

Apache Camel教程– EIP,路由,組件,測試和其他概念的簡介

公司之間的數據交換增加了很多。 必須集成的應用程序數量也增加了。 這些接口使用不同的技術,協議和數據格式。 但是,這些應用程序的集成應以標準化的方式建模,有效實現并由自動測試支持。 企業集成模式(EIP)[1]中存在…

iOS開發UI篇—UITableview控件簡單介紹

一、基本介紹 在眾多移動應?用中,能看到各式各樣的表格數據 。 在iOS中,要實現表格數據展示,最常用的做法就是使用UITableView,UITableView繼承自UIScrollView,因此支持垂直滾動,?且性能極佳 。 UITableview有分組和不分組兩種樣式,可以在storyboard或…

PL/SQL 08 異常 exception

--PL/SQL錯誤 編譯時 運行時--運行時的出錯處理 EXCEPTION --異常處理塊DECLARE …BEGIN …EXCEPTION WHEN OTHERS THEN handler_error(…);END; --用戶自定義的異常DECLARE e_TooManyStudents EXCEPTION; …BEGIN … RAISE e_TooManyStudents; …EXCEPTION WHEN e_TooMany…

html鼠標事件沒反應,鼠標有時候點擊沒反應怎么解決

關于鼠標有時候點擊沒反應的問題,一些網友顯得一頭霧水,那這該怎么解決呢?下面就由小編來給你們說說鼠標有時候點擊沒反應的原因及解決方法吧,希望可以幫到你們哦!鼠標有時候點擊沒反應的解決方法一:一,系統繁忙&…

動態ADF火車:以編程方式添加火車停靠站

我將展示如何以編程方式“即時”將火車停靠站添加到ADF火車中。 在我的用例中,我有一些票務預訂應用程序。 它具有訓練模型的有限任務流。 在火車的第一站,用戶輸入乘客的數量,在隨后的站點,他們輸入一些乘客的信息。 帶有乘客信息…

修改sqlserver的數據庫排序規則語句

alter database SOETMS collate Chinese_PRC_CI_AS 轉載于:https://www.cnblogs.com/lxboy2009/p/5481977.html

關于存儲過程權限

關于ORACLE賬號的權限問題,一般分為兩種權限: 系統權限: 允許用戶執行特定的數據庫動作,如創建表、創建索引、創建存儲過程等 對象權限: 允許用戶操縱一些特定的對象,如讀取視圖,可更新某些列、執行存儲過程等 像這種查…

寧波鎮海2021年高考成績查詢,最新!2021年,寧波鎮海區的這14所中小學“爆了...

寧波鎮海區教育局發布了2021年公辦學校小學一年級、初中一年級招生第一次預警,這也是寧波首個發布2021年公辦學校招生預警的縣、市、區。根據最新數據摸排,寧波鎮海區有8所小學紅色預警、2所初中紅色預警,1所小學黃色預警、3所初中黃色預警。…

用Java解決生產者-消費者問題

當我們嘗試多線程編程時,生產者-消費者問題是最常見的問題之一。 盡管不像多線程編程中的其他一些問題那樣具有挑戰性,但是錯誤地實現此問題可能會造成應用程序混亂。 生產的物品將不使用,開始的物品將被跳過,消耗量取決于生產是在…

哪位科學家奠定了計算機結構理論,計算機等級考試一級理論知識選擇題題庫(1-50)...

領域中的問題為主的數值計算稱為科學計算B)計算機應用可分為數值應用和非數值應用兩類C)計算機各部件之間有兩股信息流,即數據流和控制流D)對信息(即各種形式的數據)進行收集、儲存、加工與傳輸等一系列活動的總稱為實時控制答案:D32. 金卡工程是我國正在…

axios 參數為payload的解決方法

1. 添加頭部headers headers: {Content-Type: application/x-www-form-urlencoded,}, axios.post(url, {a: 1, b:2}, {headers: {Content-Type: application/x-www-form-urlencoded,}, }).then(response > response.data).then(err > {console.log(err);}); 2. 在Browser…

超出了GC開銷限制– Java堆分析

這篇文章是我們原來的GC超出限制的問題模式帖子的延續。 正確的Java堆分析對于消除O??utOfMemoryError:GC開銷問題至關重要。 如果您不熟悉此Java HotSpot 1.6錯誤,建議您首先閱讀有關此主題的第一篇文章 。 本文將為您提供一個示例程序和一個教程&…

開燈問題

開燈問題 時間限制:3000 ms | 內存限制:65535 KB難度:1描述有n盞燈,編號為1~n,第1個人把所有燈打開,第2個人按下所有編號為2 的倍數的開關(這些燈將被關掉),第3 個人按…

計算機科學基本理論,計算機科學的基礎知識.ppt

計算機科學的基礎知識第二章 計算機科學的基礎知識 本章學習目標: 數據的理解、分類與表示 計算機的基本結構與工作原理 程序設計基礎 算法基礎 2.1 數據類型 2.2 計算機內部的數據 2.3 表示數據 2.4 十進制表示法 2.5 二進制表示法 2.6 十六進制表示法 2.7 八進制表…

損壞注冊表的原因

軟件: (1)應用程序錯誤 (2)驅動程序不兼容或使用了錯誤的應用程序 (3)應用程序在注冊表中添加了錯誤的內容 (4)應用程序添加了錯誤的數據文件和應用程序之間的聯系 硬件: &#xff0…