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