Closed8

Philo勉強まとめ

bayamasabayamasa

円卓上に哲学者が座る。哲学者の両サイドにはフォークがある。
哲学者は一人一人threadをもつ。

哲学者の行動ログは以下の順番パターンのみ

  1. フォークを取る
  2. 食べる
  3. 寝る
  4. 考える
  5. 死ぬ(毎回ではない)

基本的になコンセプトは1 ~ 4を繰り返す。
その間に哲学者が死なないような実装にする。

bayamasabayamasa

食べる時間、死ぬまでの時間、寝る時間は引数で与えられる。

  • 食べる時間
    forkを2つもつ必要がある。
  • 死ぬまでの時間
    哲学者は食べないと死ぬ。
    以下の時間が引数で与えられた死ぬまでの時間を過ぎてしまったら哲学者は死んでしまう。
  1. シチュエーションがスタートしてから食べるまでの時間
  2. 前の食事を始めた時間から次の食事をするまでの時間
  • 寝る時間
    食べ終わったら寝る。その時間。
bayamasabayamasa

基本的に隣の哲学者がフォークを持っている(食べている)ときはそのフォークを置くまで隣の人は待たないと行けない。
その時間 + 寝る時間 + 食べる時間 > 死ぬまでの時間になると哲学者は死んでしまうので、これを避ける。

bayamasabayamasa

哲学者が死んでから10ms以内にdiedのprintをしないといけない。

bayamasabayamasa

今回の課題ではexitが使えないため、もし1threadで何かしら問題が発生した場合、全スレッドを回収して終了する必要がある?

このスクラップは2022/05/04にクローズされました