2006-03-14
Google 多数決その1
Windowsアプリケーションの2重起動防止についてのGoogle様の御神託を聞いてみた。
FindWindow 2重起動 の検索結果 約 233 件
FindWindow 二重起動 の検索結果 約 175 件
CreateMutex 2重起動 の検索結果 約 195 件
CreateMutex 二重起動 の検索結果 約 178 件
OpenMutex 2重起動 の検索結果 約 92 件
OpenMutex 二重起動 の検索結果 約 62 件
ちなみに、FindWindow を使用する方法では、運が良い時だけ2重起動を防止できる。
※FindWindow の結果が得られた後、Windowの生成が完了するまでの間に他の処理が割り込めるため。
CreateMutex を使用する方法は確実に2重起動を防止できる。
※CreateMutex は、Mutex の有無のチェックと作成をアトミックに行うので他の処理が割り込めない。
OpenMutex 後に CreateMutex を実行する方法は、やはり運が良い時だけ2重起動を防止できる。
※Mutex の有無のチェックと作成を分けて行っているので他の処理が割り込む余地があるため。
世の中はもっともらしい嘘でいっぱいだ。
2006/06/16 追記
Windows XP では、さらに考慮すべき点が増えたので注意が必要らしい。
FindWindow 2重起動 の検索結果 約 233 件
FindWindow 二重起動 の検索結果 約 175 件
CreateMutex 2重起動 の検索結果 約 195 件
CreateMutex 二重起動 の検索結果 約 178 件
OpenMutex 2重起動 の検索結果 約 92 件
OpenMutex 二重起動 の検索結果 約 62 件
ちなみに、FindWindow を使用する方法では、運が良い時だけ2重起動を防止できる。
※FindWindow の結果が得られた後、Windowの生成が完了するまでの間に他の処理が割り込めるため。
CreateMutex を使用する方法は確実に2重起動を防止できる。
※CreateMutex は、Mutex の有無のチェックと作成をアトミックに行うので他の処理が割り込めない。
OpenMutex 後に CreateMutex を実行する方法は、やはり運が良い時だけ2重起動を防止できる。
※Mutex の有無のチェックと作成を分けて行っているので他の処理が割り込む余地があるため。
世の中はもっともらしい嘘でいっぱいだ。
2006/06/16 追記
Windows XP では、さらに考慮すべき点が増えたので注意が必要らしい。