Ads by Google

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MFCで同期処理

CEvent

普段はAPIの::CreateEvent()とWaitForxxx()関数を利用していたので、今回初めてCEventを使ってみての覚え書き

コンストラクタ

MSDNの引数説明がどうにも判りにくいので、覚え書き程度の落書き。

CEvent event(BOOL bInitiallyOwn, bManualReset, lpszName, lpsaAttribute);

↓Win32APIに直すと・・・

::CreateEvent(lpsaAttribute, bManualReset,bInitiallyOwn, lpszName);
 lpsaAttribute:
  イベントオブジェクトにセキュリティ属性。
 bManualReset:
  手動or自動リセット(当然TRUEが手動リセット)。
 bInitiallyOwn:
  イベントオブジェクトの初期状態。Trueで初期状態からシグナル状態。
 lpszName:
  イベントオブジェクトの名前。

Unlockメソッド

当メソッドについては、もっともらしい事がMSDNに記述されているが、実態は以下の通りで何もしてない。

-MTEX.CPPより抜粋-
BOOL CEvent::Unlock()
{
    return TRUE;
}
-MSDN CEvent::Unlock解説より-
イベント オブジェクトを解放します。

BOOL Unlock( );

戻り値
スレッドがイベント オブジェクトを所有していて、そのイベントが自動イベントの場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説
ロック オブジェクトを再利用するときは、自動イベントを現在所有しているスレッドが終了後にイベントを解放するためにこのメンバ関数を呼び出します。ロック オブジェクトを再利用しないときは、ロック オブジェクトのデストラクタがこのメンバ関数を呼び出します。

イベントのアンロックなので、非シグナル状態にでもするのか、もしくは、イベントオブジェクトそのものが解放されるのかと思ってしまった。未熟者ガ━━━(゚Д゚;)━━━ン!

ちなみにCMutexの方は次のようになっていて、Mutexを解放しております。

BOOL CMutex::Unlock()
{
	return ::ReleaseMutex(m_hObject);
}

comment

Secre

プロフィール

ぴりから

  • Author:ぴりから
  • ■自称 アーキテクト?
    Windows系 (゚o゚C=(_ _;バキッ
    ■なんちゃって個人事業主
    ■一応世帯主
    妻一人+子供二人+犬二匹

    成り行きで、フリーランスでソフト開発してますが、正直、明日の自分を見つけていません・・・orz


カレンダー
06 | 2009/07 | 08
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
FC2カウンター
最近のコメント
最近のトラックバック
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

ブログ内検索
RSSフィード
リンク