[1388] Re:マルチスレッドについて
投稿者:(ぱ)こと管理人
2009/07/17 02:59:59
すみません、今みっつくらいよくわからないのですが、
> sid[0] = スレ開始("タイマ表示",40,6," 40ms"," で6回実行");
> sid[1] = スレ開始("タイマ表示",60,5," 60ms"," で5回実行");
> sid[2] = スレ開始("タイマ表示",80,4," 80ms"," で4回実行");
ここで、スレッドを3本起動しており、「タイマ表示」という関数名の関数を
呼び出しているようですが、その「タイマ表示」関数は、引数のqidを順に
変えながら、3回呼び出されているように見えますが……(そして毎回、自ら
returnしている)
>int タイマ表示(int sid, int qid,int p1, string p2, string p3)
>{
> string questr = " SID=" + sid + " QID=" + qid;
> if(qid == スレッド開始) {
> // スレッド起動時のみ時実行 --------------
> println("タイマ表示スレッド開始"+questr+" 回数="+p1+p2+p3);
> システム変数("HAI000-HAI001",生成);
> カウント = 0;
> 回数 = p1;
> システム変数("HAS000-HAS001",生成);
> P2STR = p2;
> P3STR = p3;
> } elsif(qid == タイマ) {
> // タイマキューにより実行 --------------
> カウント++;
> println("タイマ表示"+questr+" cnt="+カウント+P2STR+P3STR);
> if(カウント >= 回数) {
> println("タイマ表示スレッド終了" + questr);
> return スレッド終了;
> }
> } elsif(qid == 終了指示) {
> println("タイマ表示 終了指示により終了" + questr);
> return スレッド終了;
> } else {
> println("タイマ表示スレッド エラー終了" + questr);
> return スレッドエラー終了;
> }
> return スレッド待機;
>}
「タイマ表示」関数がreturnしないまま、別のスレッドに制御を奪われることって
あるんでしょうか?