• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種數(shù)據(jù)庫(kù)系統(tǒng)中線程間的模擬信號(hào)通信方法技術(shù)方案

    技術(shù)編號(hào):8190980 閱讀:221 留言:0更新日期:2013-01-10 01:52
    本發(fā)明專利技術(shù)公開(kāi)了一種數(shù)據(jù)庫(kù)系統(tǒng)中線程間的模擬信號(hào)通信方法,包括:數(shù)據(jù)庫(kù)系統(tǒng)下直接設(shè)置一信號(hào)管理器,信號(hào)管理器中設(shè)置并存儲(chǔ)各個(gè)線程的線程消息ThreadInfo,在該線程消息ThreadInfo中設(shè)置本線程可接收并處理不同信號(hào)信息,并設(shè)置不同信號(hào)對(duì)應(yīng)的標(biāo)識(shí);在線程開(kāi)始時(shí)注冊(cè)本線程各個(gè)信號(hào)所對(duì)應(yīng)的處理函數(shù)信息;當(dāng)某一線程需要給目標(biāo)線程發(fā)送信號(hào)時(shí),在該目標(biāo)線程的線程消息ThreadInfo中修改該信號(hào)對(duì)應(yīng)標(biāo)識(shí);該目標(biāo)線程接收該標(biāo)識(shí),并通過(guò)該信號(hào)對(duì)于應(yīng)的處理函數(shù)進(jìn)行處理。本發(fā)明專利技術(shù)實(shí)施方式的線程間的模擬信號(hào)通信方法,采用類似進(jìn)程間通信的信號(hào)機(jī)制,由信號(hào)管理器統(tǒng)一管理和調(diào)度各線程信號(hào)處理函數(shù),去除了代碼中為通信而定義的大量狀態(tài)變量,使得各線程的任務(wù)單一化,從而使得代碼的更強(qiáng)的可讀性和可維護(hù)性,技術(shù)方案簡(jiǎn)單,方便實(shí)用。

    【技術(shù)實(shí)現(xiàn)步驟摘要】

    本專利技術(shù)涉及通信
    ,特別涉及。
    技術(shù)介紹
    隨著現(xiàn)代信息產(chǎn)業(yè)的不斷深入發(fā)展,對(duì)于信息的集成和共享的需求也變得日益迫切。為了增大吞吐量,提高CPU的利用率,服務(wù)器端的程序一般都會(huì)采用多線程技術(shù)或者多進(jìn)程技木。相對(duì)于單線程/迸程來(lái)說(shuō),多進(jìn)程/線程模式的效率更高,但是隨之而來(lái)的,程序復(fù)雜性會(huì)急劇増大,因?yàn)槎鄠€(gè)線程/進(jìn)程為了完成特定的功能必須要相互協(xié)作,也就是它們需要同步和通信。 在unix系統(tǒng)中,進(jìn)程間的通信可以通過(guò)信號(hào)來(lái)實(shí)現(xiàn),在進(jìn)程啟動(dòng)時(shí),首先調(diào)用signal (signo, handle)注冊(cè) 信號(hào)處理函數(shù),然后等待其他進(jìn)程發(fā)送信號(hào)來(lái)作出相應(yīng)的動(dòng)作。這種機(jī)制非常地方便。而對(duì)于多線程來(lái)說(shuō),通常是通過(guò)全局變量來(lái)實(shí)現(xiàn)的,工作線程通過(guò)檢測(cè)全局變量值的變化來(lái)作出相應(yīng)的動(dòng)作。這種方式在簡(jiǎn)單的應(yīng)用中已經(jīng)足夠了,但是在像數(shù)據(jù)庫(kù)系統(tǒng)這種復(fù)雜的系統(tǒng)中使用將會(huì)使得代碼的可讀性及可維護(hù)性下降。這種通過(guò)全局狀態(tài)變量來(lái)通信的做法,對(duì)于線程數(shù)量少,通信需求不大的情形來(lái)說(shuō)已經(jīng)足夠了,但是對(duì)于數(shù)據(jù)庫(kù)這種復(fù)雜的系統(tǒng)來(lái)說(shuō),這種技術(shù)方案主要有以下幾個(gè)缺點(diǎn)全局變量泛濫;代碼的可讀性下降;可維護(hù)性下降;代碼的復(fù)雜性增加,難以測(cè)試等。以某ー XML數(shù)據(jù)庫(kù)使用多線程模式為例,其中涉及的線程主要包括I. Mater線程接收客戶端請(qǐng)求,并啟動(dòng)Backend線程來(lái)處理這些請(qǐng)求;2. Backend線程解析并處理客戶端的請(qǐng)求;3. BgWriter線程將對(duì)數(shù)據(jù)庫(kù)的改動(dòng)寫(xiě)回磁盤;4. WalLogger 線程寫(xiě)日志這些線程之間的協(xié)作需要大量的通信,比如WalLogger線程會(huì)通知BgWriter線程,讓其寫(xiě)磁盤或者是做check point,大多數(shù)這種通信都是告知性質(zhì)的。對(duì)于這種情況,為了實(shí)現(xiàn)他們之間的通信,就會(huì)定義大量的全局狀態(tài)變量,比如說(shuō),BgWriter為了判斷是否要寫(xiě)磁盤就需要ー個(gè)bool型的全局變量Bool g_bNeedSync2Disk;而WalLogger在需要寫(xiě)磁盤時(shí)就是將這個(gè)變量設(shè)置成true,從而就達(dá)到了通知BgWriter寫(xiě)磁盤的目的。這種通過(guò)全局狀態(tài)變量來(lái)通信的做法,對(duì)于線程數(shù)量少,通信需求不太太的情況來(lái)說(shuō)實(shí)現(xiàn)起來(lái)還方便,但是對(duì)于數(shù)據(jù)庫(kù)這種復(fù)雜的系統(tǒng)來(lái)說(shuō),定義過(guò)多的全局變量就使得整個(gè)系統(tǒng)的代碼可讀性下降、可維護(hù)性差。
    技術(shù)實(shí)現(xiàn)思路
    為解決上述問(wèn)題,本專利技術(shù)技術(shù)方案提供了ー種數(shù)據(jù)庫(kù)管理系統(tǒng)中線程間的模擬信號(hào)通信方法,包括數(shù)據(jù)庫(kù)系統(tǒng)下直接設(shè)置一信號(hào)管理器,信號(hào)管理器中設(shè)置并存儲(chǔ)各個(gè)線程的線程消息Threadlnfo,在該線程消息ThreadInfo中設(shè)置本線程可接收并處理不同信號(hào)信息,并設(shè)置不同信號(hào)對(duì)應(yīng)的標(biāo)識(shí);在線程開(kāi)始時(shí)注冊(cè)本線程各個(gè)信號(hào)所對(duì)應(yīng)的處理函數(shù)信息;當(dāng)某一線程需要給目標(biāo)線程發(fā)送信號(hào)時(shí),在該目標(biāo)線程的線程消息ThreadInfo中修改該信號(hào)對(duì)應(yīng)標(biāo)識(shí);該目標(biāo)線程接收該標(biāo)識(shí),并通過(guò)該信號(hào)對(duì)于應(yīng)的處理函數(shù)進(jìn)行處理。可選地,線程消息ThreadInfo通過(guò)位置信息來(lái)設(shè)置不同信息對(duì)應(yīng)的標(biāo)識(shí),每一位表示一信號(hào)及對(duì)應(yīng)的處理函數(shù);當(dāng)某一線程需要給該目標(biāo)線程發(fā)送信號(hào)時(shí),先找到該目標(biāo)線程對(duì)應(yīng)的線程消息 Threadlnfo,再找到該信號(hào)所在的位置,后將該位置進(jìn)行修改;當(dāng)該目標(biāo)線程處理好該信號(hào)后,將該線程消息ThreadInfo對(duì)應(yīng)位置信息重新進(jìn)行修改。可選地,在該線程消息ThreadInfo中設(shè)置一信號(hào)隊(duì)列signalQueue,該隊(duì)列每一位的位置上表示對(duì)應(yīng)的處理函數(shù),每一位置上的數(shù)字N表示當(dāng)前接收到N個(gè)線程發(fā)送當(dāng)前處理函數(shù)需處理的該信號(hào)。可選地,signalQueue有32位,每一位對(duì)應(yīng)一處理函數(shù),并且處理函數(shù)的處理結(jié)果有兩種狀態(tài)。可選地,所述的信號(hào)處理器通過(guò)設(shè)置所述發(fā)送線程的信號(hào)隊(duì)列控制所述發(fā)送線程處理模擬信號(hào)。與現(xiàn)有技術(shù)相比,上述技術(shù)方案具有下優(yōu)點(diǎn)本專利技術(shù)實(shí)施方式的線程間的模擬信號(hào)通信方法,采用類似進(jìn)程間通信的信號(hào)機(jī)制,由信號(hào)管理器統(tǒng)一管理和調(diào)度各線程信號(hào)處理函數(shù),去除了代碼中為通信而定義的大量狀態(tài)變量,使得各線程的任務(wù)單一化,從而使得代碼的更強(qiáng)的可讀性和可維護(hù)性,技術(shù)方案簡(jiǎn)單,方便實(shí)用。附圖說(shuō)明圖I是本專利技術(shù)實(shí)施方式的數(shù)據(jù)庫(kù)管理系統(tǒng)中線程間的模擬信號(hào)通信方法的流程圖;圖2是本專利技術(shù)實(shí)施方式的數(shù)據(jù)庫(kù)管理系統(tǒng)中線程間的模擬信號(hào)通信方法中的信號(hào)管理器與數(shù)組結(jié)構(gòu)之間的關(guān)系示意圖;圖3是本專利技術(shù)的實(shí)施方式的數(shù)據(jù)庫(kù)管理系統(tǒng)中的線程間的模擬信號(hào)通信方法的一個(gè)應(yīng)用例示意圖。具體實(shí)施例方式為使本專利技術(shù)的上述目的、特征和優(yōu)點(diǎn)能夠更為明顯易懂,下面結(jié)合附圖對(duì)本專利技術(shù)的具體實(shí)施方式做詳細(xì)的說(shuō)明。在以下描述中闡述了具體細(xì)節(jié)以便于充分理解本專利技術(shù)。但是本專利技術(shù)能夠以多種不同于在此描述的其它方式來(lái)實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本專利技術(shù)內(nèi)涵的情況下做類似推廣。因此本專利技術(shù)不受下面公開(kāi)的具體實(shí)施方式的限制。本領(lǐng)域的技術(shù)人員知道,在unix系統(tǒng)中,進(jìn)程間的通信可以通過(guò)信號(hào)來(lái)實(shí)現(xiàn),在進(jìn)程啟動(dòng)時(shí),首先調(diào)用signal (signo, handle)注冊(cè) 信號(hào)處理函數(shù),然后等待其他進(jìn)程發(fā)送信號(hào)來(lái)作出相應(yīng)的動(dòng)作。這種機(jī)制非常地方便。而對(duì)于多線程來(lái)說(shuō),通常是通過(guò)全局變量來(lái)實(shí)現(xiàn)的,工作線程通過(guò)檢測(cè)全局變量值的變化作出相應(yīng)的動(dòng)作。這種方式在簡(jiǎn)單的應(yīng)用中已經(jīng)足夠了,但是在像數(shù)據(jù)庫(kù)系統(tǒng)這種復(fù)雜的系統(tǒng)中使用將會(huì)使得代碼的可讀性及可維護(hù)性下降。為解決現(xiàn)有技術(shù)中的問(wèn)題,本專利技術(shù)的專利技術(shù)人經(jīng)過(guò)研究,提出了ー種線程間的模擬信號(hào)通信方法。參閱圖1,圖I是本專利技術(shù)實(shí)施方式的數(shù)據(jù)庫(kù)管理系統(tǒng)中線程間的模擬信號(hào)通信方法的流程圖。本專利技術(shù)實(shí)施方式的線程間的數(shù)據(jù)庫(kù)管理系統(tǒng)中線程間的模擬信號(hào)通信方法,包括數(shù)據(jù)庫(kù)系統(tǒng)下直接設(shè)置一信號(hào)管理器,信號(hào)管理器中設(shè)置并存儲(chǔ)各個(gè)線程的線程消息Threadlnfo,在該線程消息ThreadInfo中設(shè)置本線程可接收并處理不同信號(hào)信息,并設(shè)置不同信號(hào)對(duì)應(yīng)的標(biāo)識(shí); 在線程開(kāi)始時(shí)注冊(cè)本線程各個(gè)信號(hào)所對(duì)應(yīng)的處理函數(shù)信息;當(dāng)某ー線程需要給目標(biāo)線程發(fā)送信號(hào)時(shí),在該目標(biāo)線程的線程消息ThreadInfo中修改該信號(hào)對(duì)應(yīng)標(biāo)識(shí);該目標(biāo)線程接收該標(biāo)識(shí),并通過(guò)該信號(hào)對(duì)于應(yīng)的處理函數(shù)進(jìn)行處理。下面結(jié)合說(shuō)明書(shū)附圖對(duì)本專利技術(shù)實(shí)施方式的線程間的模擬信號(hào)通信方法做進(jìn)ー步詳細(xì)的說(shuō)明。應(yīng)用例,包括Sll :數(shù)據(jù)庫(kù)系統(tǒng)下直接設(shè)置一信號(hào)管理器,信號(hào)管理器中設(shè)置并存儲(chǔ)各個(gè)線程的線程消息Threadlnfo,在該線程消息ThreadInfo中設(shè)置本線程可接收并處理不同信號(hào)信息,并設(shè)置不同信號(hào)對(duì)應(yīng)的標(biāo)識(shí)。信號(hào)管理器直接設(shè)置在系統(tǒng)下面,其可以為一大數(shù)組或ー隊(duì)列。各個(gè)線程設(shè)置ー線程消息Threadlnfo。信號(hào)管理器為姆個(gè)線程維護(hù)著ー個(gè)結(jié)構(gòu)Threadlnfo。還請(qǐng)參閱圖2,其給出的是ー個(gè)最多支持256個(gè)線程通信的實(shí)例,同進(jìn)從圖中可以看出,當(dāng)前一共管理著兩個(gè)線程的通信信息。其中Threadlnfo的定義的實(shí)例如下typedef void (ThreadsigHandler*) (int signo ); struct ThreadInfo { pthread_t tid:// tid of this thread pthread_mutex_t mut;//protect the access to signalQueue pthread—co本文檔來(lái)自技高網(wǎng)
    ...

    【技術(shù)保護(hù)點(diǎn)】
    一種數(shù)據(jù)庫(kù)系統(tǒng)中線程間的模擬信號(hào)通信方法,其特征在于,包括:數(shù)據(jù)庫(kù)系統(tǒng)下直接設(shè)置一信號(hào)管理器,所述信號(hào)管理器中設(shè)置并存儲(chǔ)各個(gè)線程的線程消息ThreadInfo,在該線程消息ThreadInfo中設(shè)置本線程可接收并處理不同信號(hào)信息,并設(shè)置不同信號(hào)對(duì)應(yīng)的標(biāo)識(shí);在線程開(kāi)始時(shí)注冊(cè)本線程各個(gè)信號(hào)所對(duì)應(yīng)的處理函數(shù)信息;當(dāng)某一線程需要給目標(biāo)線程發(fā)送信號(hào)時(shí),在該目標(biāo)線程的線程消息ThreadInfo中修改該信號(hào)的對(duì)應(yīng)標(biāo)識(shí);該目標(biāo)線程接收該標(biāo)識(shí),并通過(guò)該信號(hào)對(duì)相應(yīng)的處理函數(shù)進(jìn)行處理。

    【技術(shù)特征摘要】

    【專利技術(shù)屬性】
    技術(shù)研發(fā)人員:李書(shū)淦李浩趙偉鄭程光孫偉豐羅正海李泉程仁波
    申請(qǐng)(專利權(quán))人:上海方正數(shù)字出版技術(shù)有限公司
    類型:發(fā)明
    國(guó)別省市:

    網(wǎng)友詢問(wèn)留言 已有0條評(píng)論
    • 還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。

    1
    主站蜘蛛池模板: 好了av第四综合无码久久| 无码h黄动漫在线播放网站| 色综合久久久无码中文字幕 | 永久免费AV无码网站在线观看| 日韩毛片免费无码无毒视频观看 | 精品无码专区亚洲| 中文字幕无码一区二区三区本日| 老司机亚洲精品影院无码| 人妻丝袜无码专区视频网站| 精品无码一区二区三区爱欲| 一本色道久久HEZYO无码| 亚洲精品无码中文久久字幕| 亚洲AV永久无码精品一百度影院 | 无码精品久久久天天影视| 国产精品爆乳奶水无码视频| AA区一区二区三无码精片| 亚洲AV成人无码久久精品老人| 狠狠爱无码一区二区三区| 中文字幕无码日韩欧毛| 亚洲不卡中文字幕无码| 国产精品亚韩精品无码a在线| 成年男人裸j照无遮挡无码| 特级小箩利无码毛片| 曰产无码久久久久久精品| 欧洲人妻丰满av无码久久不卡| 亚洲成AV人片天堂网无码| 亚洲一区AV无码少妇电影☆| 中文无码vs无码人妻 | av无码精品一区二区三区四区| 无码不卡av东京热毛片| 无码国产午夜福利片在线观看| 亚洲色无码专区在线观看| 亚洲爆乳无码专区| 无码日韩精品一区二区三区免费 | 亚洲中文字幕久久精品无码VA| 熟妇人妻AV无码一区二区三区| 亚洲Av永久无码精品三区在线| 无码一区二区三区在线观看 | 免费无码又爽又刺激高潮视频| 无码人妻精品一区二区三| 国产精品无码av在线播放|