Generatoare de bariere de memorie

Citind Tutorialul de filetare al lui Joseph Albahari , următoarele sunt menționate ca generatoare de bariere de memorie:

  • C # lock statement ( Monitor.Enter / Monitor.Exit )
  • Toate metodele din clasa Interlocked
  • Callback-uri asincrone care utilizează pool-ul de fire - acestea includ delegați asincroni, callback-uri APM , și Task continuare
  • Setarea și așteptarea unei construcții de semnalizare
  • Orice lucru care se bazează pe semnalizare, cum ar fi pornirea sau așteptarea unei sarcini

În plus, Hans Passant și Brian Gideon au adăugat următoarele ] (presupunând că niciuna dintre acestea nu se încadrează deja într-una din categoriile anterioare):

  • Pornirea sau trezirea unui fir
  • Comutator contextual
  • Thread.Sleep ()

Mă întrebam dacă această listă este completă ( dacă s-ar putea face chiar o listă completă)

EDIT adăugiri sugerate:

  • Vo latile (citirea implică un gard de achiziție, scrierea implică un gard de eliberare)

24
задан Community 23 May 2017 в 12:02
поделиться