タグ

ブックマーク / kumikomiya.com (2)

  • C++11 に期待すること(後編) | 組込屋

    takuwz
    takuwz 2019/11/29
  • アトミックであるとはどういうことか | 組込屋

    当は 0x11 になるべきところが、0x10 への変化が塗りつぶされ、0x01 になってしまいました。これも、滅多に起きないからこそ恐ろしいバグの一つです。 弱者の義務 あるタスクから見て値が絶えず動いているということは、それは自身より優先度の高いタスクによって書き換えられているか、ペリフェラルのレジスタであるかのどちらかです。 ここに一つのポイントがあります。アトミック性を意識しなければならないのは、常に割り込まれる側、つまり弱者の側であるということです。今あなたの書いているコードが強者の側なら、これに対して打てる手はありません。 対策 アトミック問題の対策については、問題領域によって取るべき手段が異なるため、とてもここに書き切れるものではありませんが、比較的単純なものをここでご紹介します。 二度読み 値を単に抜き取るだけなら、この対策が最もシンプルです。二度読みとは、厳密には「二連続

    アトミックであるとはどういうことか | 組込屋
    takuwz
    takuwz 2019/07/11
    “構造体のコピーは、およそ CPU の1命令で成し得る操作ではないからです。そして、この操作がアトミックでないとどうなるか。運悪く時刻の変わり目に当たると、バグになります。”
  • 1