Domanda

So che simili uscite dei modelli in TBB di Intel, oltre che non riesco a trovare qualsiasi implementazione su Google o nella libreria Boost.

È stato utile?

Soluzione

Si possono trovare discussioni su questa implementazione funzione di spinta c'è: http: //lists.boost.org/Archives/boost/2008/11/144803.php

  

> Può il N2427 - Tipi di C ++ atomici e le operazioni da attuare

     

> senza l'aiuto del compilatore?

     

No.

     

Non hanno bisogno di essere intrinseche se si può scrivere assembler inline (o assembler separatamente compilato per   quella materia), allora si può scrivere il   operazioni stesse direttamente. voi   potrebbe anche essere in grado di utilizzare semplice C ++   (Assegnazione esempio semplicemente per carico   o negozio). Il motivo è necessario   supporto del compilatore impedisce   ottimizzazioni inappropriate: atomica   operazioni non possono essere ottimizzate, e   in genere non devono essere riordinati   prima o dopo qualsiasi altra operazione.   Ciò significa che anche non-atomico   negozi eseguito prima di un atomica   negozio deve essere completa, e non ci riesce   essere memorizzate nella cache in un registro (per esempio).   Inoltre, i carichi che si verificano dopo   un'operazione atomica non può essere sollevato   prima che l'op atomica. su alcuni   compilatori, usando solo assembler inline   è abbastanza. Su altri, chiamare un   funzione esterna è sufficiente. MSVC   fornisce   _ReadWriteBarrier () per fornire l'ordinamento compilatore. altri compilatori   bisogno di altre bandiere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top