當(dāng)柳上原的風(fēng)吹向天際的時(shí)候...

          真正的快樂(lè)來(lái)源于創(chuàng)造

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
          一.目錄互斥方案:這種互斥要求同一目錄下不能運(yùn)行兩個(gè)應(yīng)用程序的實(shí)例,通常用文件解決之,即程序啟動(dòng)時(shí)看看所在目錄下有沒(méi)有一個(gè)特定文件的存在,在的話(huà)就退出,不在的話(huà)就自己創(chuàng)建一個(gè),退出時(shí)再刪除之。這種情況下,這個(gè)臨時(shí)文件便成了同一目錄下程序已經(jīng)啟動(dòng)實(shí)例的標(biāo)志。為了避免誤刪除導(dǎo)致此功能失常,可以給文件加上隱藏屬性。

          二.本機(jī)互斥方案:這種互斥要求在一臺(tái)機(jī)器上只能運(yùn)行一個(gè)實(shí)例。一種解決辦法是在注冊(cè)表的特定位置進(jìn)行記錄,原理和文件互斥類(lèi)似;另一個(gè)解決辦法是利用端口,即程序啟動(dòng)后在某一端口進(jìn)行監(jiān)聽(tīng),這樣第二個(gè)實(shí)例啟動(dòng)時(shí)再去監(jiān)聽(tīng)就不可行了,這種方式很巧妙,無(wú)須顧忌程序異常退出問(wèn)題,只是會(huì)無(wú)端占用一個(gè)端口,有時(shí)客觀環(huán)境不允許這么干。

          三.單用戶(hù)互斥方案:這種互斥要求系統(tǒng)只允許同名用戶(hù)登錄一次,因此服務(wù)器端必須存放用戶(hù)對(duì)應(yīng)的數(shù)據(jù),當(dāng)用戶(hù)登上時(shí)檢查這部分?jǐn)?shù)據(jù)就可以了,這種方式最棘手的是客戶(hù)端程序的異常退出導(dǎo)致再也無(wú)法登錄,但讓客戶(hù)端發(fā)心跳包或是服務(wù)器端反連客戶(hù)端來(lái)解決。

          綜上,互斥功能要成功,就要找到互斥對(duì)象共同的環(huán)境或是上下文。如果找到了,互斥就變成了一個(gè)技術(shù)問(wèn)題。

          posted on 2010-12-31 13:47 何楊 閱讀(272) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 九龙城区| 岢岚县| 上思县| 朝阳县| 林口县| 元朗区| 临汾市| 孟津县| 贺州市| 兴隆县| 大庆市| 北安市| 龙井市| 新郑市| 开远市| 措勤县| 阿拉尔市| 山东| 藁城市| 克拉玛依市| 阳高县| 扎赉特旗| 宁国市| 游戏| 万宁市| 什邡市| 卓资县| 区。| 修武县| 二连浩特市| 阳曲县| 潢川县| 科尔| 镇平县| 六盘水市| 西盟| 杨浦区| 德州市| 申扎县| 高台县| 迁安市|