當柳上原的風吹向天際的時候...

          真正的快樂來源于創(chuàng)造

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

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

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

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

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

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 克什克腾旗| 汉阴县| 磐安县| 邢台县| 呼玛县| 探索| 五莲县| 黎城县| 全椒县| 乌苏市| 长泰县| 三门峡市| 错那县| 文山县| 景宁| 渭南市| 巩留县| 黎平县| 马尔康县| 衡南县| 安徽省| 乌苏市| 措美县| 定陶县| 临武县| 孟连| 黄平县| 砀山县| 临高县| 金坛市| 石渠县| 兰西县| 汝城县| 普洱| 长汀县| 南岸区| 青龙| 土默特左旗| 汶上县| 玛纳斯县| 个旧市|