Solarisプログラミング教えてチョンマゲ (337レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
193(1): 04/06/14 21:40 AAS
>>192
> >>191
> そのスレッドAってのは時間監視だけしてるの? それとも処理BってのもスレッドAの仕事?
> 時間監視だけなら、シグナル使わないでスレッドAをその時間だけ眠らせておけばいいんでない?
そうしておいて、B側で処理が間に合ったらフラグをセットして、スリープから起きてきたA側がそのフラグをチェックすればいいんじゃないのかな?
194: 191 04/06/14 23:39 AAS
レスありがとう。
>192,193
スリープでもいいかなと思って、暫定的にそのような処理にして、動かしていました。
しかし、他にもいくつかのスレッドが立ち上がっており、タイマー待ちができない状態になりました。
結局、なんとか今日解決したのですが、どのようにしたかというと、以下のような感じです。
(SIGALRMは他のスレッドで使用するため、ほかのシグナル(SIGUSR1)に変更することになりました)
スレッドAは時間監視セット処理のみ行う。
処理Bはタイマーによって監視され、一定時間経過したら、ハンドラによって強制的にプロセスごと終了させられる。
・初期設定
・スレッドA起動
( ---> シグナルハンドラ(SIGUSR1)設定、timer_create(TimerID), timer_settime() -----> スレッドA終了)
( 時間が来たらハンドラ起動 ---> ハンドラ(終了処理後、abortで強制終了) )
・処理B
・処理Bが時間内に終了
・タイマー削除処理(timer_delete(TimerID))
・処理続行
以上、こんな感じです。
ありがとうございました。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.012s