CMutexの仕様方法を教えてください。 – プログラミング – Home

CMutexの仕様方法を教えてください...
 
通知
すべてクリア

[解決済] CMutexの仕様方法を教えてください。


HAITA
 HAITA
(@HAITA)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

今回初めて投稿させていただきます。
環境はWin2000、VC++6.0です。
VC++で排他制御をしたいと思っているのですが、可能でしょうか?
MSDN調べていたところCMutexがあったのですが、これは排他をかけるものかと
思いまして投稿させていただきました。
CMutexには引数が3つあるかと思いますが、何を渡したらよいか分かりません。
何方かサンプル若しくはご存知の方がいましたら教えていただけませんでしょうか?


引用未解決
トピックタグ
職業婦人
 職業婦人
(@職業婦人)
ゲスト
結合: 23年前
投稿: 9
 

一口に排他制御といわれても
2重起動の防止ですか?編集中のファイルの保護ですか?
MSDNにサンプルがあるじゃないですか。
googleでの検索結果
CMutex785件 ミューテクス57件 ミューテックス642件


返信引用
HAITA
 HAITA
(@HAITA)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

CMutex mutex(FALSE, m_pszExeName);
if( mutex.Lock(0) == TRUE ) {
mutex.Unlock();
}


返信引用
HAITA
 HAITA
(@HAITA)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

CMutex mutex(FALSE, m_pszExeName);
if( mutex.Lock(0) == TRUE ) {
mutex.Unlock();
}


返信引用
HAITA
 HAITA
(@HAITA)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

間違えて2重送信をしてしまいました。すみません。
排他制御はアプリケーションの2重起動防止です。
以下の用な処理をしているのですが上手くいかないのが現状です。
BOOL C?????App::InitInstance()
{
CMutex mutex(FALSE, m_pszExeName);
if( mutex.Lock(0) == TRUE ) {
mutex.Unlock();
}

return FALSE;
}

起動するとUnlock処理に走ってしまいます。
間違っていましたら教えてください。


返信引用
職業婦人
 職業婦人
(@職業婦人)
ゲスト
結合: 23年前
投稿: 9
 

2重起動の防止なら過去ログを参照してください。
CMutexを使用しなくても2行で実現できます。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> if( mutex.Lock(0) == TRUE ) {
> mutex.Unlock();
> }

うまく施錠できたとたんにそれを解除しているのですから、
鍵はいつも開けっ放しですよね。


返信引用
HAITA
 HAITA
(@HAITA)
ゲスト
結合: 23年前
投稿: 5
Topic starter  

二重起動防止が出来ました。ありがとうございました。
職業婦人さん言う2行では出来ませんでしたが、以下のようにしましたら出来ました。

HANDLE hMutex;
hMutex = CreateMutex(NULL, TRUE, test);
if (!hMutex)
return FALSE;
if (GetLastError() == ERROR_ALREADY_EXISTS)
return FALSE;

ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました