Hlavní navigace

Názor ke zprávičce NSA nabádá organizace, aby používaly jazyky, které bezpečně pracují s pamětí od MarSik - Něco jako tohle při používání std::sync::Mutex: static promenna: Mutex<Data> Nebo...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 14. 11. 2022 11:13

    MarSik

    Něco jako tohle při používání std::sync::Mutex:

    static promenna: Mutex<Data>

    Nebo tohle v nostd?

    static FOO: Mutex<RefCell<i32>> = Mutex::new(RefCell::new(42));

    (z dokumentace k https://docs.rs/critical-section/latest/critical_section/struct.Mutex.html)

    Bez zámku je to buď nebezpečné nebo jsou potřeba atomické typy. Se zámkem je to nebezpečné taky, pokud interrupt nastane a zámek je zamčený.

    Ten druhý příklad tím netrpí, protože critical_secti­on::Mutex zakazuje interrupty. Ta RefCell je tam jen kvůli některým speciálním případům (zanoření a klony critical section tokenů).

    Pokud víte, že tohle dostatečně řeší logika aplikace, UnsafeCell to umožní. Jen to nepohlídá kompilátor za Vás. Což v C / C++ taky nedělá.