Oh dear!
Sembra che la risposta corretta contrassegnata qui come LA RISPOSTA sia intrinsecamente scorretta! Vorrei chiedere all'autore della risposta, rispettosamente, di leggere l'articolo collegato fino alla fine.article
L'autore dell'articolo dal 2003 article misurava solo su macchina Dual Core e nel primo caso di misura, si misurata bloccaggio con attacco singolo solo e il risultato era di circa 50 ns per l'accesso serratura.
Non dice nulla su un blocco nell'ambiente concorrente. Quindi dobbiamo continuare a leggere l'articolo e nella seconda metà l'autore stava misurando lo scenario di blocco con due e tre thread, che si avvicina ai livelli di concorrenza dei processori odierni.
Quindi l'autore dice che con due thread su Dual Core, i blocchi costano 120ns e con 3 thread si passa a 180ns. Quindi sembra essere chiaramente dipendente dal numero di thread ad accesso simultaneo e più è peggio.
Quindi è semplice, non è 50 ns, a meno che non sia un singolo thread, in cui il blocco diventa inutile.
Un altro problema da considerare è che viene misurato come tempo medio !
Se il tempo di iterazioni sarebbe misurata, ci sarebbe anche più volte tra 1ms a 20ms, semplici perché la maggioranza era veloce, ma pochi fili saranno in attesa di tempo processori e incorrere anche millisecondi lunghi ritardi.
Questa è una cattiva notizia per qualsiasi tipo di applicazione che richiede un throughput elevato, bassa latenza.
E l'ultimo problema da considerare è che potrebbero esserci operazioni più lente all'interno della serratura e molto spesso questo è il caso. Quanto più lungo il blocco di codice viene eseguito all'interno del blocco, tanto maggiore è la contesa e i ritardi salgono in alto.
Si consideri che oltre un decennio è passato già dal 2003, cioè poche generazioni di processori progettati specificamente per funzionare in modo simultaneo e bloccante sta danneggiando notevolmente le loro prestazioni.
Il blocco della variabile non è così costoso; è l'attesa su una variabile bloccata che vuoi evitare. – Gabe
è molto meno costoso che passare ore a rintracciare un'altra condizione di gara ;-) – BrokenGlass
Beh ... se una serratura è costosa potresti volerli evitare modificando la programmazione in modo che richieda meno blocchi. Potrei implementare un qualche tipo di sincronizzazione. –