軟件架構(gòu)設(shè)計(jì)中的同步與異步問(wèn)題_第1頁(yè)
軟件架構(gòu)設(shè)計(jì)中的同步與異步問(wèn)題_第2頁(yè)
軟件架構(gòu)設(shè)計(jì)中的同步與異步問(wèn)題_第3頁(yè)
軟件架構(gòu)設(shè)計(jì)中的同步與異步問(wèn)題_第4頁(yè)
軟件架構(gòu)設(shè)計(jì)中的同步與異步問(wèn)題_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件架構(gòu)設(shè)計(jì)中的同步與異步問(wèn)題BLOGLIOU內(nèi)容概要:本文分析了大型程序系統(tǒng)設(shè)計(jì)中經(jīng)常需要面對(duì)的同步和異步結(jié)構(gòu)問(wèn)題。列舉異步結(jié)構(gòu)模式實(shí)現(xiàn)手段,論證異步模式效率遠(yuǎn)遠(yuǎn)優(yōu)越于同步模式,證明在硬件資源理想情況下,對(duì)同步模式而言并發(fā)量對(duì)計(jì)算機(jī)系統(tǒng)的平均交易處理時(shí)間沒(méi)有影響,對(duì)異步模式而言平均交易處理時(shí)間會(huì)隨著并發(fā)量的增大而急劇下降,最終也趨向一個(gè)恒定值。在實(shí)際有限計(jì)算機(jī)資源情況下,程序設(shè)計(jì)必須設(shè)置最大并發(fā)量以控制并發(fā)程度,否則過(guò)多并發(fā)量會(huì)形成交易對(duì)硬件資源的競(jìng)爭(zhēng),造成交易的擁塞。關(guān)鍵詞:同步,異步,消息隊(duì)列,效率,并發(fā)基本概念同步和異步問(wèn)題是大型程序設(shè)計(jì)中需要慎重等待的問(wèn)題,但目前這方面的討論很少,本文就試圖進(jìn)行有關(guān)方面討論。一個(gè)大型的程序系統(tǒng)常常是由很多不能功能模塊組成的。程序系統(tǒng)運(yùn)行時(shí)不同功能模塊要按一定順序執(zhí)行,以協(xié)同完成一件任務(wù)。功能模塊協(xié)作運(yùn)行完成一件任務(wù)存在同步和異步兩種方式。如果在某一時(shí)間段,這個(gè)程序系統(tǒng)的所有功能模塊都在為完成相同的一件任務(wù)而服務(wù),某一個(gè)功能模塊在完成一件任務(wù)的子任務(wù)后,需要等待其他功能模塊完成子任務(wù),這樣只有當(dāng)全部功能模塊按順序完成一件任務(wù)后,程序系統(tǒng)才能接收下一個(gè)任務(wù),功能模塊是串行運(yùn)行,這稱之為同步模式。反之,在某一時(shí)間段,這個(gè)程序系統(tǒng)的不同功能模塊可以獨(dú)立運(yùn)行完成一件任務(wù)的子任務(wù),無(wú)須等待其他功能模塊完成子任務(wù)就可以繼續(xù)處理下一件任務(wù)的子任務(wù),功能模塊是并行運(yùn)行,這稱之為異步模式。打個(gè)比方,在一個(gè)生產(chǎn)流水線上有A和B兩道工序,如果工位A完成自己任務(wù),把任務(wù)傳遞給工位B后,需要等待工位B完成工序后,工位A才能開(kāi)始下一件產(chǎn)品工作,這就是同步模式。如果工位A在把任務(wù)傳遞給工位B后,工位A不等待工位B是否完成任務(wù),就開(kāi)始下一件產(chǎn)品的任務(wù)處理,這就是異步模式。又比如,現(xiàn)代戰(zhàn)斗機(jī)發(fā)射導(dǎo)彈過(guò)程也經(jīng)歷了從"同步”走向"異步”的過(guò)程。早期的導(dǎo)彈性能還不太完善,戰(zhàn)斗機(jī)發(fā)射導(dǎo)彈后,需要飛行員照顧導(dǎo)彈飛行,直到導(dǎo)彈命中目標(biāo),這就是"同步”過(guò)程。后來(lái),導(dǎo)彈性能越來(lái)越先進(jìn),出現(xiàn)了"發(fā)射后不管”導(dǎo)彈,即戰(zhàn)斗機(jī)發(fā)射完導(dǎo)彈后,導(dǎo)彈會(huì)自動(dòng)尋找并擊中目標(biāo),飛行員發(fā)射導(dǎo)彈后可以不再管導(dǎo)彈飛行過(guò)程,不再理會(huì)導(dǎo)彈是否會(huì)命中目標(biāo),而可以開(kāi)始捕捉下一個(gè)目標(biāo),這就是"異步”過(guò)程。反映在OLTP程序系統(tǒng)中,一個(gè)交易就是一個(gè)任務(wù)。如程序系統(tǒng)一次只完成一個(gè)交易,在這個(gè)交易沒(méi)有完成前,程序系統(tǒng)不接受其他交易,這就是同步模式。如程序系統(tǒng)把交易任務(wù)分拆成幾個(gè)獨(dú)立的子進(jìn)程,每個(gè)子進(jìn)程獨(dú)立完成交易的一個(gè)子任務(wù),幾個(gè)子進(jìn)程同時(shí)運(yùn)行,這就是異步模式。由于交易在模塊之間是按照一定順序運(yùn)行的,所以對(duì)一個(gè)具體交易而言,模塊之間任務(wù)執(zhí)行時(shí)并不表現(xiàn)為并行運(yùn)行,但對(duì)大批量交易的宏觀效果而言,模塊之間卻是表現(xiàn)為并行運(yùn)行。實(shí)現(xiàn)問(wèn)題在多功能模塊的程序系統(tǒng)設(shè)計(jì)中,最重要的是要考慮模塊之間的通信或數(shù)據(jù)傳遞。同步結(jié)構(gòu)的程序?qū)崿F(xiàn)很簡(jiǎn)單,常見(jiàn)情況是把所有功能模塊編譯在同一個(gè)程序中,這樣實(shí)現(xiàn)數(shù)據(jù)共享不難,有些情況是利用函數(shù)參數(shù)傳遞共享數(shù)據(jù),通過(guò)CALL調(diào)用,來(lái)執(zhí)行下一個(gè)功能模塊,所以同步結(jié)構(gòu)的功能模塊一般是不能獨(dú)立運(yùn)行的,但通信模塊除外,因?yàn)橥降耐ㄐ拍K本身就可以通過(guò)SOCKET等通信機(jī)制來(lái)傳遞共享數(shù)據(jù),所以是可以獨(dú)立運(yùn)行的。異步結(jié)構(gòu)的實(shí)現(xiàn)稍微復(fù)雜一些。因?yàn)橐螽惒浇Y(jié)構(gòu)程序系統(tǒng)的不同功能模塊作為獨(dú)立進(jìn)程能夠獨(dú)立運(yùn)行,但在非通信進(jìn)程模塊之間,在進(jìn)程間就存在共享數(shù)據(jù)鴻溝,每個(gè)獨(dú)立進(jìn)程就象一個(gè)個(gè)信息孤島,這就要求進(jìn)程間能夠?qū)崿F(xiàn)通信以在進(jìn)程間傳遞數(shù)據(jù)。在UNIX系統(tǒng)平臺(tái)上,提供了進(jìn)程間通信(InterprocessCommunications)即IPC機(jī)制。IPC種類很多,有:帶鎖機(jī)制的規(guī)則文件(Regularfileswithlocking)--可以對(duì)規(guī)則文件使用適當(dāng)?shù)逆i機(jī)制,用文件作為共享數(shù)據(jù)載體來(lái)實(shí)現(xiàn)進(jìn)程間通信、管道(PIPES)、SOCKETS、信號(hào)(Signals)等。以上幾種IPC方式在普通進(jìn)程間通信是有缺陷的。使用帶鎖機(jī)制的規(guī)則文件,因?yàn)橐x寫硬盤文件,所以效率低,而且文件要上鎖以保證多個(gè)進(jìn)程不能同時(shí)修改一個(gè)文件,所以會(huì)造成進(jìn)程等待而影響效率。SOCKETS主要是用來(lái)進(jìn)行通信程序設(shè)計(jì),管道和信號(hào)不能共享大量數(shù)據(jù)。在普通進(jìn)程間要實(shí)現(xiàn)數(shù)據(jù)共享,實(shí)際有效通信的常用IPC工具是這三種:消息隊(duì)列(MessageQueue)、共享內(nèi)存(SharedMemory)信號(hào)燈(Semaphores)在實(shí)際應(yīng)用系統(tǒng)開(kāi)發(fā)中,消息隊(duì)列使用得最多。消息隊(duì)列實(shí)際上就是一個(gè)可以讀寫應(yīng)用數(shù)據(jù)的內(nèi)存塊。它可以被不同的進(jìn)程讀寫。比如下圖表示有三個(gè)進(jìn)程向一個(gè)消息隊(duì)列寫信息,有一個(gè)進(jìn)程從該隊(duì)列中讀取信息。圖1消息隊(duì)列示意圖在消息隊(duì)列的基礎(chǔ)上,一些廠商提供了性能更好、功能更多的"消息隊(duì)列”產(chǎn)品,即MessageQ,簡(jiǎn)稱MQ,如IBM公司的MQSeries(現(xiàn)在叫webSphereMQ)、BEA公司的MQ,國(guó)內(nèi)有的軟件公司也開(kāi)發(fā)了自己的MQ產(chǎn)品。這些MQ的出現(xiàn)為大型異步結(jié)構(gòu)程序的進(jìn)程間通信設(shè)計(jì)提供了強(qiáng)有力的開(kāi)發(fā)工具。在AS/400系統(tǒng)平臺(tái)上,OS/400操作系統(tǒng)提供了DataQueue(DTAQ)目標(biāo)對(duì)象,DTAQ與消息隊(duì)列類似,從而為AS/400上的異步結(jié)構(gòu)程序開(kāi)發(fā)提供了良好實(shí)現(xiàn)工具。效率問(wèn)題這里的效率狹義講就是程序系統(tǒng)運(yùn)行快慢問(wèn)題。異步模式在速度上遠(yuǎn)遠(yuǎn)快于同步模式,這是一個(gè)軟件設(shè)計(jì)和生活常識(shí)。但有些人卻認(rèn)為同步結(jié)構(gòu)的程序效率要優(yōu)于異步結(jié)構(gòu)的程序,有的人也難以理解異步模式為什么會(huì)比同步模式效率高,那么我們就來(lái)具體分析同步結(jié)構(gòu)程序和異步結(jié)構(gòu)程序的效率優(yōu)劣。以O(shè)LTP系統(tǒng)為例,完成一個(gè)交易平均所需時(shí)間是評(píng)價(jià)OLTP程序系統(tǒng)性能的最重要指標(biāo)。假設(shè)某種典型交易需要A、B、C三個(gè)順序任務(wù)來(lái)完成,相應(yīng)地有A、B、C三個(gè)功能模塊。假設(shè)A、B、C三個(gè)模塊完成各自任務(wù)所需時(shí)間分別是Ta、Tb、Tc。對(duì)于同步結(jié)構(gòu)程序來(lái)說(shuō),系統(tǒng)完成一個(gè)交易所需時(shí)間理所當(dāng)然應(yīng)該為三個(gè)模塊的簡(jiǎn)單累加,即Ta+Tb+Tc。但對(duì)于異步結(jié)構(gòu)程序來(lái)說(shuō),由于程序系統(tǒng)被分成了幾個(gè)獨(dú)立進(jìn)程,每個(gè)進(jìn)程需要增加額外的時(shí)間s來(lái)處理進(jìn)程間通信,這樣異步程序完成這樣一個(gè)交易所需時(shí)間應(yīng)該是(Ta+s)+(Tb+s)+(Tc+s)。因?yàn)?Ta+s)+(Tb+s)+(Tc+s)>;Ta+Tb+Tc據(jù)此一些人所以認(rèn)為同步程序所以比異步程序效率高。然而,他們卻忽視了一個(gè)重要問(wèn)題,就是在實(shí)際業(yè)務(wù)運(yùn)行時(shí)往往是大批量交易同時(shí)運(yùn)行。假設(shè)現(xiàn)在有N筆交易需要程序系統(tǒng)來(lái)處理,在同步程序未進(jìn)行并發(fā)機(jī)制處理?xiàng)l件下,由于同步程序一次只能做一個(gè)交易,交易是串行完成,所以完成N筆交易時(shí)間應(yīng)該是一次交易時(shí)間的N次簡(jiǎn)單累加,即N*(Ta+Tb+Tc),從宏觀看,同步模式完成N筆交易,處理總的時(shí)間是N*(Ta+Tb+Tc),所以平均交易處理時(shí)間也就是一個(gè)交易的執(zhí)行時(shí)間:Ta+Tb+Tc。如果從用戶的角度來(lái)看,每個(gè)人在等待時(shí)并不理會(huì)別人是否在等待,因?yàn)樗却臅r(shí)間都是屬于他自己的,這樣每個(gè)人的平均等待時(shí)間就是(1+2+3+..+n)*(Ta+Tb+Tc)/N=(N+1)/2*(Ta+Tb+Tc)但是這個(gè)時(shí)間并不是系統(tǒng)處理交易的平均執(zhí)行時(shí)間。所以在理想計(jì)算機(jī)系統(tǒng)同步模式下,并發(fā)量對(duì)交易平均處理時(shí)間沒(méi)有影響,并不會(huì)隨著并發(fā)量的增大而增大。對(duì)于異步程序來(lái)說(shuō),首先假設(shè)在多CPU計(jì)算機(jī)系統(tǒng)理想情況下,由于多個(gè)CPU完全能夠支持各個(gè)進(jìn)程同時(shí)獨(dú)立運(yùn)行,假設(shè)A、B、C三個(gè)進(jìn)程同時(shí)接到N筆任務(wù),就象一條生產(chǎn)流水線上三個(gè)工位同時(shí)處理N筆任務(wù),由于三個(gè)進(jìn)程同時(shí)運(yùn)行處理,這樣從宏觀結(jié)果來(lái)看,程序系統(tǒng)平均完成一個(gè)交易所需時(shí)間只相當(dāng)于那個(gè)最慢的進(jìn)程所需時(shí)間,比如生產(chǎn)流水線上最慢的那個(gè)工位完成了N筆任務(wù),那么實(shí)際上整個(gè)流水線也就完成了N筆任務(wù),因?yàn)槠渌の坏娜蝿?wù)早已經(jīng)完成了。所費(fèi)時(shí)間最大相差誤差也就是一個(gè)交易或一個(gè)任務(wù)的時(shí)間,這個(gè)時(shí)間也就是流水線上最慢那個(gè)工位之前的工位在處理第一個(gè)交易的時(shí)間加上最慢那個(gè)工位之后的工位在處理最后一個(gè)交易時(shí)的時(shí)間,加起來(lái)正好是一個(gè)交易的時(shí)間。而這一個(gè)交易或一個(gè)任務(wù)的時(shí)間相對(duì)于N筆任務(wù)所費(fèi)時(shí)間是可以完全忽略不計(jì)的。簡(jiǎn)單地說(shuō),兩個(gè)人同時(shí)吃飯,甲吃飯花了1個(gè)小時(shí),乙吃飯花了2個(gè)小時(shí),那么他們都吃完飯的時(shí)間應(yīng)該是2小時(shí),而不是1+2=3小時(shí)。實(shí)際上一個(gè)餐廳工作模式就是一個(gè)異步模式,因?yàn)橐粋€(gè)餐廳同一時(shí)間能夠供許多人就餐,而不是只容許一個(gè)人吃完了才容許下一個(gè)人就餐。圖2異步結(jié)構(gòu)程序工作示意圖假設(shè)C進(jìn)程最慢,這樣一來(lái)異步程序完成這N筆交易所需時(shí)間約接近于(N+1)*(Tc+s),平均處理時(shí)間約等于(N+1)/N*(Tc+s)。即交易平均處理時(shí)間與并發(fā)量的關(guān)系類似于y=a+b/x。所以在多CPU計(jì)算機(jī)系統(tǒng)理想情況異步模式下,交易平均處理時(shí)間會(huì)隨著并發(fā)量的增大而急劇下降,最終也趨向一個(gè)恒定值。但大批量情況下異步結(jié)構(gòu)程序平均單筆交易處理時(shí)間顯然要遠(yuǎn)遠(yuǎn)小于同步結(jié)構(gòu)的程序。圖3多CPU理想情況下交易平均交易處理時(shí)間與并發(fā)量關(guān)系那么在單CPU計(jì)算機(jī)系統(tǒng)下結(jié)果又如何呢?表面上看單CPU需要分片處理多任務(wù),似乎完成同步結(jié)構(gòu)的交易要比異步結(jié)構(gòu)的交易要快,但實(shí)際上在絕大多數(shù)應(yīng)用系統(tǒng)中,CPU利用率是很低的,通常是在百分之十幾以下,這是因?yàn)閼?yīng)用程序通常都要花費(fèi)大量時(shí)間與其他外設(shè)打交道,比如讀寫文件,有的應(yīng)用程序自身還有額外的其他等待時(shí)間等等,這些過(guò)程是不占用CPU時(shí)間的。以此考慮,異步結(jié)構(gòu)程序與在多CPU理想情況下的運(yùn)行情況很相似。但畢竟受限于單CPU的處理能力,所以異步結(jié)構(gòu)程序會(huì)隨著自身進(jìn)程數(shù)的多少和進(jìn)程復(fù)雜度,其運(yùn)行效率會(huì)相應(yīng)下降。在有限并發(fā)量情況下,平均交易處理時(shí)間與并發(fā)量關(guān)系曲線與在多CPU理想情況下相似。所以如果只運(yùn)行一個(gè)或幾個(gè)簡(jiǎn)單交易,同步結(jié)構(gòu)的程序也許要比異步結(jié)構(gòu)的程序快,但實(shí)際情況卻是應(yīng)用系統(tǒng)要在短時(shí)間內(nèi)處理大批量的交易,所以顯然異步結(jié)構(gòu)的程序效率要遠(yuǎn)遠(yuǎn)快于同步結(jié)構(gòu)的程序。異步結(jié)構(gòu)的程序能夠最大限度地利用CPU的處理能力,而同步結(jié)構(gòu)的程序則在CPU處理能力的利用上造成極大浪費(fèi)。尤其是在多CPU計(jì)算機(jī)系統(tǒng)上,每增加一個(gè)CPU,異步結(jié)構(gòu)程序效率就能提高一大臺(tái)階,而同步結(jié)構(gòu)程序因無(wú)法利用多CPU處理能力,所以對(duì)其效率幾乎沒(méi)有影響。在商業(yè)應(yīng)用計(jì)算機(jī)系統(tǒng)中,絕大多數(shù)都是多CPU的系統(tǒng),所以異步和同步結(jié)構(gòu)的應(yīng)用程序孰優(yōu)孰劣一目了然。就象在規(guī)模大、人數(shù)多的公司內(nèi),如果再增加一個(gè)新餐廳,那么就餐效率就會(huì)大大提高一樣?,F(xiàn)在許多大型商業(yè)軟件都采用異步模式的程序設(shè)計(jì)結(jié)構(gòu),為滿足異步程序開(kāi)發(fā)的需求,IBM、BEA等公司推出的專門用于進(jìn)程間通信的MQ中間件產(chǎn)品就是很好的異步結(jié)構(gòu)程序開(kāi)發(fā)工具。并發(fā)問(wèn)題上節(jié)已經(jīng)證明,在理想情況下,對(duì)于同步模式來(lái)說(shuō)并發(fā)量實(shí)際上對(duì)交易平均處理時(shí)間沒(méi)有什么影響。相反,在異步模式下交易平均處理時(shí)間會(huì)隨著并發(fā)量的增大而急劇下降,即處理速度越來(lái)越快,最終也趨向一個(gè)恒定值。而我們常常說(shuō)到的"軟件能夠支持最大并發(fā)量”實(shí)際上并不是效率問(wèn)題,而是程序設(shè)計(jì)利用硬件資源問(wèn)題!即程序設(shè)計(jì)結(jié)構(gòu)和硬件資源共同限制了并發(fā)量。在大批量業(yè)務(wù)處理情況下,同步結(jié)構(gòu)的程序必須使用并發(fā)機(jī)制才能保證程序系統(tǒng)的處理速度,否則系統(tǒng)一次只能處理一個(gè)交易,要等待該交易完成后才能接受下一個(gè)交易,在大量交易并發(fā)情況下前臺(tái)客戶等待時(shí)間就會(huì)很長(zhǎng),即客戶平均等待時(shí)間等于(N+1)/2*單筆交易處理時(shí)間,這樣的系統(tǒng)速度在大批量交易并發(fā)情況下常常是不能被接受的。異步結(jié)構(gòu)的程序由于已經(jīng)分成多個(gè)進(jìn)程,每個(gè)進(jìn)程都不等待地處理自己的任務(wù),所以異步結(jié)構(gòu)的程序一般情況下甚至無(wú)需進(jìn)行并發(fā)處理,就可以滿足大批量交易處理要求。當(dāng)然異步結(jié)構(gòu)的程序每個(gè)進(jìn)程都可以再進(jìn)行并發(fā)處理,這樣每個(gè)進(jìn)程的處理速度都能大大得到提高。所謂并發(fā)處理一般是通過(guò)fork函數(shù)調(diào)用,來(lái)復(fù)制自己,產(chǎn)生許多個(gè)與自己一模一樣的子進(jìn)程來(lái)同時(shí)并行處理進(jìn)入程序系統(tǒng)的多個(gè)交易。所以說(shuō)并發(fā)程序設(shè)計(jì)實(shí)際上是一種特殊的異步結(jié)構(gòu)程序設(shè)計(jì)。而所謂最大并發(fā)量往往是由系統(tǒng)可使用內(nèi)存、MQ容量等來(lái)限制的。在同步程序結(jié)構(gòu)設(shè)計(jì)中,由于多個(gè)功能模塊常常編譯在一個(gè)程序內(nèi),這樣在進(jìn)行并發(fā)處理時(shí),程序必須復(fù)制自身全部代碼。而程序代碼是要占用內(nèi)存空間的。假設(shè)程序系統(tǒng)有A、B、C三個(gè)功能模塊組成,每個(gè)模塊的代碼量為Ma、Mb、Mc,假設(shè)同時(shí)有N個(gè)交易申請(qǐng)任務(wù),如果同步結(jié)構(gòu)程序采取并發(fā)機(jī)制,則程序必須同時(shí)復(fù)制N個(gè)自身,這樣就有N*(Ma+Mb+Mc)代碼量需要占據(jù)內(nèi)存,這是相當(dāng)可觀的,往往交易量一大就會(huì)突破內(nèi)存可使用容量。而異步結(jié)構(gòu)程序通常情況下甚至無(wú)需fork自身就可滿足需求,即使需要fork進(jìn)程,也可以靈活地有選擇地對(duì)那些速度慢的瓶頸進(jìn)程進(jìn)行fork,所以占用內(nèi)存代碼量相對(duì)較小,且代碼利用率高,不象同步結(jié)構(gòu)程序的許多代碼處于白占內(nèi)存的等待閑置狀態(tài),所以在同樣的計(jì)算機(jī)系統(tǒng)環(huán)境下,異步結(jié)構(gòu)的程序往往比同步結(jié)構(gòu)的程序具有更大的容許并發(fā)量。所以異步結(jié)構(gòu)的程序能夠更有效率利用硬件資源,而同步結(jié)構(gòu)的程序則對(duì)硬件資源造成很大的浪費(fèi)(過(guò)度浪費(fèi)CPU,過(guò)度占用內(nèi)存)。在采用并發(fā)機(jī)制的程序中,應(yīng)該根據(jù)程序代碼量和內(nèi)存、MQ等大小以及CPU處理能力等來(lái)估算最大并發(fā)量,并在程序中設(shè)置參數(shù)來(lái)進(jìn)行控制。如果不加控制,一旦并發(fā)進(jìn)程數(shù)超過(guò)內(nèi)存或MQ的最大容許量,有可能引起如系統(tǒng)死機(jī)等不可預(yù)測(cè)結(jié)果。而且,并發(fā)進(jìn)程如果過(guò)多,超過(guò)硬件資源允許度,則進(jìn)程之間容易競(jìng)爭(zhēng)系統(tǒng)資源,造成進(jìn)程的擁塞,影響交易運(yùn)行速度。這就象一個(gè)公司規(guī)模很大,就餐人數(shù)多,而餐廳規(guī)模小,不能同時(shí)供應(yīng)這么多人就餐,那么只好限制同一時(shí)間就餐人數(shù),用延長(zhǎng)就餐時(shí)間來(lái)彌補(bǔ)。比如在通信程序中,經(jīng)常需要考慮并發(fā)連接的問(wèn)題,這就需要在SERVER端設(shè)置成并發(fā)機(jī)制的服務(wù)器,需要設(shè)置最大并發(fā)連接參數(shù)。在SOCKET接口函數(shù)中已經(jīng)提供了這個(gè)功能,這是通過(guò)在LISTEN函數(shù)的參數(shù)中進(jìn)行設(shè)置來(lái)實(shí)現(xiàn)的。假設(shè)同步進(jìn)程并發(fā)處理N筆交易,在理想情況下,就是說(shuō)在一個(gè)交易時(shí)間內(nèi)系統(tǒng)處理了N筆交易,那么平均處理時(shí)間即為(Ta+Tb

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論