syu-kwsk / Sora_skitchen_project

mbedでの開発
0 stars 0 forks source link

Multithread #3

Open syu-kwsk opened 5 years ago

syu-kwsk commented 5 years ago

multi thread

ファミマの入店音をどうするか

syu-kwsk commented 5 years ago

threadの練習 thread_try.cpp

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しません。

tanacchi commented 5 years ago

あーーーそうだな〜

thread のスコープは if 文の中だから 一瞬で if 抜けて thread が破棄されてしまってるのが原因かと

tanacchi commented 5 years ago

wave 内のロジックも見直した方がいいかも

(if (lv < 11) を満たさない場合ってあるのか…?)