Open syu-kwsk opened 5 years ago
threadの練習として、デジタルアレイがwaveするのとLEDの点灯を同時に行うものを以下のプログラムでしました。(一部だけです、exit()は出力を切る関数)
void wave(void const *argument){
const double WAVETIME = 0.02;
for(int lv = 0;lv < 10;lv++){
if(lv < 11){
for(int i = 0;i < lv;i++){
a[i] = 0;
}
a[lv] = 1;
wait(WAVETIME);
}
else if (lv == RESET){
for(int i = 0;i < 10;i++){
a[i] = 0;
}
}
}
}
int main() {
while(1){
if(mysw1 == 1){
Thread thread(wave);
light(1);
}
else{
exit();
}
}
}
コンパイルは通りますが、実行結果はスイッチを押していない間は何も起こらず、スイッチを押すとLED1が点灯し続け、それ以降その状態が続きます。waveしません。
あーーーそうだな〜
thread のスコープは if 文の中だから 一瞬で if 抜けて thread が破棄されてしまってるのが原因かと
wave 内のロジックも見直した方がいいかも
(if (lv < 11) を満たさない場合ってあるのか…?)
multi thread
ファミマの入店音をどうするか