同時イベント – プログラミング – Home

通知
すべてクリア

[解決済] 同時イベント


春日井
 春日井
(@春日井)
ゲスト
結合: 20年前
投稿: 4
Topic starter  

複数のスレッドでイベント待機させて
1つのトリガーで全てのイベントをONにしたいです。
スレッドは数が決まっていないので
あらかじめイベントを作ることが出来ませんので
1つのイベントハンドルで実現できたらうれしいです。
そのようなイベントってどう実現したらいいのでしょうか?

例:(イベントを使ったイメージ)
イベント発生側
SetEvent(hEvent); //1つのイベントをSet

イベント待機側(複数スレッド)
WaitForSingleObject(hEvent, INFINITE); //全スレッドが同時に実行
//実行させたい処理


引用未解決
トピックタグ
REE
 REE
(@REE)
ゲスト
結合: 24年前
投稿: 240
 

イベントを作成するときに手動リセットに設定し、
SetEventの代わりにPulseEventを使うとよいでしょう。


返信引用
春日井
 春日井
(@春日井)
ゲスト
結合: 20年前
投稿: 4
Topic starter  

ありがとうございます。
使ってみます。


返信引用
めろ
 めろ
(@めろ)
ゲスト
結合: 20年前
投稿: 2
 

>Note This function is unreliable and should not be used. It exists mainly for
backward compatibility. For more information, see Remarks.

とあるのでPulseEventを使うのはどうかと。


返信引用
春日井
 春日井
(@春日井)
ゲスト
結合: 20年前
投稿: 4
Topic starter  

この機能はあてにならない?使うべきでない?
困りましたね…他に方法ないんでしょうか…


返信引用
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

> 複数のスレッドでイベント待機させて
> 1つのトリガーで全てのイベントをONにしたいです。

またOFFに戻す必要が無いのなら、SetEvent で問題ないのでは。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

スレッド数が決まっていなくてもスレッドの管理はしないといけないのでしょうし、
メインスレッドがサブスレッドの管理をするのでしょうからきちんとスレッドを管理する
仕組みを作ってそれぞれにイベントを投げればよいと思いますけれど。
イベントの口を一つにした所でスレッド側がまったく同時にイベントを処理するわけでは
ありませんし、
どうせスレッドの管理をするならあわせて通知用のイベントハンドルも管理すれば済むと
思いますけれど。


返信引用
aetos
(@aetos)
Noble Member
結合: 6年前
投稿: 1480
 

追加情報とか

http://blogs.msdn.com/oldnewthing/archive/2005/01/05/346888.aspx
http://blogs.sqlpassj.org/yas/archive/2004/02/03/351.aspx
http://blogs.sqlpassj.org/yas/archive/2004/02/12/523.aspx

> PulseEventはWindows NT 3.1以降、ずっと問題だとされてる物ですね。
> 書籍Advansed Windows のかなり古い版(当時はAdvanced Windows NT)から
> 駄目と書かれてます。
> 互換性ってのは怖いもので一回そう実装しちゃったら変えられないってのが
> 線としては有りそうですが。

確かに手持ちの Advanced Windows にもありましたが、「使うな」と書いてあるだけ
で、回避策までは載っていませんでした。


返信引用
春日井
 春日井
(@春日井)
ゲスト
結合: 20年前
投稿: 4
Topic starter  

>またOFFに戻す必要が無いのなら、SetEvent で問題ないのでは。
OFFに戻す必要が在ります。
作ってる機能はサーバーで発生した情報を
接続されてるクライアント全てに送るものです。
接続数と同じ数のスレッドがあります。

処理の流れは、
サーバーで情報発生(ほぼ1秒毎に発生)

各スレッドに1つのイベント発生

各スレッドは情報を取り出してクライアントに送信

イベント待ちに戻る

>スレッド数が決まっていなくてもスレッドの管理はしないといけないのでしょうし、
...略
>思いますけれど。

通知用のイベントハンドルを各スレッドに渡すことにしました。
最初こうしようと思ったのですが1つで出来たら楽だろうなって…

皆さんレスありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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