none
関数SetEventの用途について RRS feed

  • 質問

  • 関数SetEventは”指定されたオブジェクトをシグナル状態に設定します。”というように、書かれていたのですがこの関数はどのような意味で呼ばれているのでしょうか。よろしくお願い致します。

    2013年8月6日 0:23

回答

  • これを理解するには、

    1.プロセス、スレッド、の意味。
    2.それらの同期の必要性と、方法論。

    への知識が必要です。

    要は、同時に動作、実行されているスレッド間で、
    イベントという仕組みを使って、タイミングを合わせる手段として
    使用されます。例えば

         EventB = CreateEvent(・・・);//イベントの作成
    ---<スレッドA>--------------<スレッドB>-----------
       何か実行中         WaitForSingleObject( EventB); // イベントを待っている
        終わった等           ↓    // イベントを待っている
     SetEvent( EventB)      ↓    // イベントが発生した
                   EventBを起因とする動作

    のような動作のために使用されるわけです。

    この様な手段に使われるものは、そのほかにも
     A.セマフォ(セマファ)
     B.ミューテックス
     C.クリティカルセクション
    などがあり、用途用法が異なります。
    これらを総称して「同期オブジェクト」と呼ばれています。

    2013年8月6日 0:56
  • 本質的な説明としては仲澤@失業者さんが説明されているように同期オブジェクトに対する理解が必要です。

    もうちょっと直接的な話として、SetEvent function

    Sets the specified event object to the signaled state.

    が日本語訳されたものです。「state」が「状態」なのはいいとして、「signaled」(動詞、過去分詞形)はMSDN日本語訳では「シグナル」で統一されています。「シグナル」では物々しくて意味を掴みづらいですが、signal / signaledは英和辞典で調べると「合図する」「合図される」の意味合いです。

    • 回答の候補に設定 星 睦美 2013年8月6日 1:22
    • 回答としてマーク 星 睦美 2013年8月7日 8:25
    2013年8月6日 1:10

すべての返信

  • これを理解するには、

    1.プロセス、スレッド、の意味。
    2.それらの同期の必要性と、方法論。

    への知識が必要です。

    要は、同時に動作、実行されているスレッド間で、
    イベントという仕組みを使って、タイミングを合わせる手段として
    使用されます。例えば

         EventB = CreateEvent(・・・);//イベントの作成
    ---<スレッドA>--------------<スレッドB>-----------
       何か実行中         WaitForSingleObject( EventB); // イベントを待っている
        終わった等           ↓    // イベントを待っている
     SetEvent( EventB)      ↓    // イベントが発生した
                   EventBを起因とする動作

    のような動作のために使用されるわけです。

    この様な手段に使われるものは、そのほかにも
     A.セマフォ(セマファ)
     B.ミューテックス
     C.クリティカルセクション
    などがあり、用途用法が異なります。
    これらを総称して「同期オブジェクト」と呼ばれています。

    2013年8月6日 0:56
  • 本質的な説明としては仲澤@失業者さんが説明されているように同期オブジェクトに対する理解が必要です。

    もうちょっと直接的な話として、SetEvent function

    Sets the specified event object to the signaled state.

    が日本語訳されたものです。「state」が「状態」なのはいいとして、「signaled」(動詞、過去分詞形)はMSDN日本語訳では「シグナル」で統一されています。「シグナル」では物々しくて意味を掴みづらいですが、signal / signaledは英和辞典で調べると「合図する」「合図される」の意味合いです。

    • 回答の候補に設定 星 睦美 2013年8月6日 1:22
    • 回答としてマーク 星 睦美 2013年8月7日 8:25
    2013年8月6日 1:10
  • ご回答ありがとうございます。

    セマフォやミューテックスは聞いたことありました。

    同期オブジェクトもいくつかあるのですね。

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

    2013年8月6日 1:14
  • ご回答ありがとうございます。

    英語の意味合いもなかなかあいまいな部分が多いのですが

    大切ですね。もう少し自分でも考えてみます。

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


    • 編集済み khsb 2013年8月6日 1:58
    2013年8月6日 1:58