本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,具體涉及一種基于異步事件框架機制處理低速外設(shè)訪問的系統(tǒng)和一種基于異步事件框架機制處理低速外設(shè)訪問的方法。
背景技術(shù):
數(shù)據(jù)通信設(shè)備的軟件在運行的過程中為了保持良好的并發(fā)能力和可擴展性,通常采用的是事件驅(qū)動的軟件框架,隨著數(shù)據(jù)通信設(shè)備的功能需求不斷增加,原有的數(shù)據(jù)通信設(shè)備的系統(tǒng)不斷出現(xiàn)一些性能問題,影響系統(tǒng)的吞吐量和容量,較為突出的是消息驅(qū)動框架中外設(shè)訪問對系統(tǒng)性能的影響,數(shù)據(jù)通訊設(shè)備的軟件經(jīng)常涉及到與低速外設(shè),即與數(shù)據(jù)傳輸速度慢的設(shè)備間進(jìn)行i/o(input/output,輸入/輸出)、寫驅(qū)動等操作,這些操作使得數(shù)據(jù)通信設(shè)備軟件的并發(fā)能力極大地降低。
數(shù)據(jù)通信設(shè)備由于其性能要求,數(shù)據(jù)通信設(shè)備的網(wǎng)絡(luò)處理軟件往往采用多線程的調(diào)度器模型,用于處理信令協(xié)議、表項計算和下發(fā)刷新等業(yè)務(wù),在進(jìn)行業(yè)務(wù)處理的同時,網(wǎng)絡(luò)處理軟件可能需要進(jìn)行后臺日志和管理軟件包的處理,將后臺日志和管理軟件包寫到磁盤中,或?qū)⒂嬎愠龅谋眄椪{(diào)用驅(qū)動接口設(shè)置到芯片中,此時,數(shù)據(jù)通信設(shè)備當(dāng)前的調(diào)度線程會由于i/o操作或系統(tǒng)調(diào)用而發(fā)生阻塞情況,使得調(diào)度線程卡頓而無法運行,只能等待數(shù)據(jù)通信設(shè)備的內(nèi)核返回,其它待處理的業(yè)務(wù)模塊的數(shù)據(jù)在這段時間內(nèi)將無法得到調(diào)度,當(dāng)數(shù)據(jù)通信設(shè)備的系統(tǒng)業(yè)務(wù)容量增大,數(shù)據(jù)通信設(shè)備系統(tǒng)的性能便會急劇下降,數(shù)據(jù)通信設(shè)備的cpu并沒有在運行處理數(shù)據(jù),且線程都在數(shù)據(jù)通信設(shè)備內(nèi)核的阻塞隊列當(dāng)中等待喚醒的調(diào)度,從而出現(xiàn)卡頓等影響用戶體驗的問題,甚至由于信令協(xié)議處理超時,導(dǎo)致業(yè)務(wù)的中斷。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種基于異步事件框架機制處理低速外設(shè)訪問的系統(tǒng)和一種基于異步事件框架機制處理低速外設(shè)訪問的方法,有效避免設(shè)備系統(tǒng)調(diào)用時堵塞現(xiàn)象的發(fā)生。
為達(dá)到以上目的,本發(fā)明采取的技術(shù)方案是:包括網(wǎng)絡(luò)處理模塊、異步事件通知框架和多個數(shù)據(jù)通信設(shè)備的外部線程:
所述網(wǎng)絡(luò)處理模塊用于將任務(wù)加入任務(wù)隊列,所述任務(wù)為數(shù)據(jù)通信設(shè)備與外設(shè)間的數(shù)據(jù)i/o操作;
所述異步事件通知框架用于當(dāng)任務(wù)加入任務(wù)隊列后喚醒一外部線程;
所述外部線程用于從任務(wù)隊列中取出任務(wù)并處理。
在上述技術(shù)方案的基礎(chǔ)上,多個外部線程同時處理多個任務(wù)。
在上述技術(shù)方案的基礎(chǔ)上,所述外部線程還用于將任務(wù)的處理結(jié)果反饋給網(wǎng)絡(luò)處理模塊。
本發(fā)明還公開了一種基于異步事件框架機制處理低速外設(shè)訪問的方法,包括:
s1:將任務(wù)加入任務(wù)隊列,所述任務(wù)為數(shù)據(jù)通信設(shè)備與外設(shè)間的數(shù)據(jù)i/o操作;
s2:判斷任務(wù)隊列中是否有任務(wù),若有,則轉(zhuǎn)到s3,若沒有,則結(jié)束;
s3:喚醒一外部線程,同時外部線程從任務(wù)隊列中取出任務(wù)并處理,然后轉(zhuǎn)到s2。
在上述技術(shù)方案的基礎(chǔ)上,所述外部線程為多個。
在上述技術(shù)方案的基礎(chǔ)上,多個外部線程同時處理多個任務(wù)。
在上述技術(shù)方案的基礎(chǔ)上,所述外部線程還用于將任務(wù)的處理結(jié)果反饋給數(shù)據(jù)通信設(shè)備。
與現(xiàn)有技術(shù)相比,本發(fā)明一種基于異步事件框架機制處理低速外設(shè)訪問的系統(tǒng)的優(yōu)點在于:針對數(shù)據(jù)通信設(shè)備與低速外設(shè)間數(shù)據(jù)i/o操作,當(dāng)數(shù)據(jù)通信設(shè)備與外設(shè)間有i/o操作時,將這種容易引起阻塞操作的任務(wù)從數(shù)據(jù)通信設(shè)備的軟件調(diào)度內(nèi)部剝離到數(shù)據(jù)通信設(shè)備的外部線程中進(jìn)行處理,這種異步的實現(xiàn)方式,極大地提升了數(shù)據(jù)通信系統(tǒng)的調(diào)度性能,同時,外部線程能夠?qū)Χ鄠€任務(wù)進(jìn)行同時處理,摒棄了目前大多數(shù)網(wǎng)絡(luò)處理軟件只能在統(tǒng)一調(diào)度器中進(jìn)行問題處理的情況,增強了數(shù)據(jù)通信設(shè)備的系統(tǒng)性能。
本發(fā)明一種基于異步事件框架機制處理低速外設(shè)訪問的方法的優(yōu)先在于:基于異步事件的處理機制,針對低速外設(shè)與數(shù)據(jù)通信設(shè)備間進(jìn)行數(shù)據(jù)的i/o操作,將此類操作任務(wù)剝離到數(shù)據(jù)通信設(shè)備的外部線程中進(jìn)行處理,極大地提升了數(shù)據(jù)通信系統(tǒng)的調(diào)度性能,減少了數(shù)據(jù)通信設(shè)備的調(diào)度線程阻塞導(dǎo)致的數(shù)據(jù)通信設(shè)備系統(tǒng)卡頓情況的發(fā)生。
附圖說明
圖1為本發(fā)明一種基于異步事件框架機制處理低速外設(shè)訪問的方法的流程圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)說明。
本發(fā)明實施例提供一種基于異步事件框架機制處理低速外設(shè)訪問的系統(tǒng),包括網(wǎng)絡(luò)處理模塊、異步事件通知框架和多個數(shù)據(jù)通信設(shè)備的外部線程。
網(wǎng)絡(luò)處理模塊用于將任務(wù)加入任務(wù)隊列,任務(wù)為數(shù)據(jù)通信設(shè)備與外設(shè)間的數(shù)據(jù)i/o操作,本發(fā)明主要針對于低速外設(shè),即與數(shù)據(jù)通信設(shè)備間數(shù)據(jù)傳輸速度較慢的外部設(shè)備,針對數(shù)據(jù)通信設(shè)備與外設(shè)間的數(shù)據(jù)i/o操作的任務(wù),本發(fā)明采用異步事件處理機制進(jìn)行處理。
異步事件通知框架用于當(dāng)任務(wù)加入任務(wù)隊列后,喚醒一外部線程,即異步事件通知框架相當(dāng)于一套異步消息的框架接口,通過“事件-喚醒”的方式實現(xiàn)異步通信,當(dāng)任務(wù)隊列被加入任務(wù)后,喚醒外部線程進(jìn)行任務(wù)處理的準(zhǔn)備。
外部線程用于從任務(wù)隊列中取出任務(wù)并處理,即外部線程被異步事件通知框架喚醒后,從任務(wù)隊列中取出任務(wù)并處理,同時外部線程還用于將任務(wù)的處理結(jié)果反饋給網(wǎng)絡(luò)處理模塊。
對于數(shù)據(jù)通信設(shè)備與外設(shè)間的數(shù)據(jù)i/o操作,存在多個i/o操作同時進(jìn)行的情況,則每個i/o操作均為一個任務(wù)。每個任務(wù)由一個外部線程處理,且多個外部線程能夠同時進(jìn)行任務(wù)的處理,即多個外部線程同時處理多個任務(wù),采用并發(fā)處理的方式,能夠?qū)Χ鄠€任務(wù)進(jìn)行同時處理。任務(wù)隊列中加入一個任務(wù),則異步事件通知框架喚醒一個線程,進(jìn)行任務(wù)的處理;任務(wù)隊列中加入2個任務(wù),則異步事件通知框架喚醒2個外部線程,對這2個任務(wù)進(jìn)行同時處理,依此類推,采用并發(fā)形式的任務(wù)處理方式。當(dāng)然,線程的設(shè)置個數(shù),能夠根據(jù)實際需求進(jìn)行靈活配置。
本發(fā)明實施例中,針對數(shù)據(jù)通信設(shè)備與低速外設(shè)間數(shù)據(jù)i/o操作,本發(fā)明采用異步事件機制來處理低速外設(shè)與數(shù)據(jù)通信設(shè)備間的訪問,當(dāng)數(shù)據(jù)通信設(shè)備與外設(shè)間有i/o操作時,將這種容易引起阻塞操作的任務(wù)從數(shù)據(jù)通信設(shè)備的軟件調(diào)度內(nèi)部剝離到數(shù)據(jù)通信設(shè)備的外部線程中進(jìn)行處理,同時,當(dāng)有任務(wù)加入到任務(wù)列表中后,喚醒外部線程進(jìn)行任務(wù)處理的準(zhǔn)備,這種異步的實現(xiàn)方式,使得數(shù)據(jù)通信設(shè)備的系統(tǒng)業(yè)務(wù)運行調(diào)度線程不會被i/o操作所阻塞,極大地提升了數(shù)據(jù)通信系統(tǒng)的調(diào)度性能,同時,線程能夠?qū)Χ鄠€任務(wù)進(jìn)行同時處理,摒棄了目前大多數(shù)網(wǎng)絡(luò)處理軟件只能在統(tǒng)一調(diào)度器中進(jìn)行問題處理的情況,數(shù)據(jù)通信設(shè)備的系統(tǒng)性能增強。
本發(fā)明還提供一種基于上述基于異步事件框架機制處理低速外設(shè)訪問的系統(tǒng)的基于異步事件框架機制處理低速外設(shè)訪問的方法,包括:
s1:將任務(wù)加入任務(wù)隊列,所述任務(wù)為數(shù)據(jù)通信設(shè)備與外設(shè)間的數(shù)據(jù)i/o操作;
s2:判斷任務(wù)隊列中是否有任務(wù),若有,則轉(zhuǎn)到s3,若沒有,則結(jié)束;
s3:喚醒一外部線程,同時外部線程從任務(wù)隊列中取出任務(wù)并處理,然后轉(zhuǎn)到s2,線程有多個,每個任務(wù)由一個線程處理,且多個線程能夠同時進(jìn)行任務(wù)的處理,即多個外部線程同時處理多個任務(wù),進(jìn)行任務(wù)的多線程并發(fā)處理。
對于處理完的任務(wù),外部線程還用于將任務(wù)的處理結(jié)果反饋給數(shù)據(jù)通信設(shè)備,即將任務(wù)的處理結(jié)果告知數(shù)據(jù)通信設(shè)備。
本發(fā)明實施例中,基于異步事件的處理機制,針對低速外設(shè)與數(shù)據(jù)通信設(shè)備間進(jìn)行數(shù)據(jù)的i/o操作,容易出現(xiàn)的調(diào)度線程阻塞情況,將此類操作任務(wù)剝離到數(shù)據(jù)通信設(shè)備的外部線程中進(jìn)行處理,同時,當(dāng)有任務(wù)加入到任務(wù)列表中后,喚醒外部線程進(jìn)行任務(wù)處理的準(zhǔn)備,這種異步的實現(xiàn)方式,使得數(shù)據(jù)通信設(shè)備的系統(tǒng)業(yè)務(wù)運行調(diào)度線程不會被i/o操作所阻塞,極大地提升了數(shù)據(jù)通信系統(tǒng)的調(diào)度性能,減少了數(shù)據(jù)通信設(shè)備的調(diào)度線程阻塞導(dǎo)致的數(shù)據(jù)通信設(shè)備系統(tǒng)卡頓情況的發(fā)生。
當(dāng)然,本發(fā)明的不僅局限于數(shù)據(jù)通信領(lǐng)域,對于任何消耗cpu或可能導(dǎo)致阻塞設(shè)備系統(tǒng)的任務(wù)操作都可以使用本發(fā)明中的方案進(jìn)行解決。
本發(fā)明不局限于上述實施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。