Articles of atomico

Devo usare atomico per la variabile bool “exit”?

Ho bisogno di impostare un flag per un altro thread per uscire. Quell’altro thread controlla di volta in volta il flag di uscita. Devo usare atomico per la bandiera o solo un semplice bool è sufficiente e perché (con un esempio di cosa esattamente potrebbe andare storto se uso il bool semplice)? #include bool exit […]

Come eseguire operazioni atomiche su Linux che funzionano su x86, arm, GCC e icc?

Ogni sistema operativo moderno fornisce oggi alcune operazioni atomiche: Windows ha l’API Interlocked* FreeBSD ha Solaris ha Mac OS X ha Qualcosa del genere per Linux? Ho bisogno che funzioni sulla maggior parte delle piattaforms supportate da Linux, tra cui: x86, x86_64 e arm . Ho bisogno che funzioni almeno su GCC e Intel Compiler. […]

Double-Checked Lock Singleton in C ++ 11

I seguenti dati di implementazione di Singleton sono gratuiti? static std::atomic m_instance; … static Tp & instance() { if (!m_instance.load(std::memory_order_relaxed)) { std::lock_guard lock(m_mutex); if (!m_instance.load(std::memory_order_acquire)) { Tp * i = new Tp; m_instance.store(i, std::memory_order_release); } } return * m_instance.load(std::memory_order_relaxed); } Lo std::memory_model_acquire di caricamento è superfluo? È ansible rilassare ulteriormente le operazioni di caricamento e […]

Librerie cache thread-safe per .NET

Sfondo: Gestisco diverse app Winform e librerie di classi che potrebbero o già trarranno vantaggio dalla memorizzazione nella cache. Sono anche a conoscenza del Caching Application Block e dello spazio dei nomi System.Web.Caching (che, da quello che ho raccolto, è perfettamente OK da usare al di fuori di ASP.NET). Ho scoperto che, sebbene entrambe le […]

Un’operazione boolé di lettura / scrittura può non essere atomica su x86?

Supponiamo di avere due thread, uno sta leggendo un bool in un ciclo e un altro lo può triggersre in determinati momentjs. Personalmente penso che questo dovrebbe essere atomico perché sizeof(bool) in C ++ è di 1 byte e non si leggono / scrivono i byte parzialmente ma voglio essere sicuro al 100%. Quindi sì […]

Perché il qualificatore volatile viene utilizzato tramite out std :: atomic?

Da quello che ho letto da Herb Sutter e da altri, si potrebbe pensare che la programmazione volatile e concorrente fosse un concetto completamente ortogonale, almeno per quanto riguarda C / C ++. Tuttavia, nell’implementazione GCC tutte le funzioni membro di std::atomic hanno il qualificatore volatile . Lo stesso è vero nell’implementazione di std::atomic Anthony […]

Atomicità in C ++: mito o realtà

Ho letto un articolo su Lockless Programming in MSDN. Dice : Su tutti i processori moderni, si può presumere che le letture e le scritture di tipi nativi allineati in modo naturale siano atomici . Finché il bus di memoria è largo almeno quanto il tipo letto o scritto, la CPU legge e scrive questi […]

Esistono operazioni javascript atomiche per gestire la natura asincrona di Ajax?

Sto caricando dynamicmente il codice (funzioni) da un server ed eseguendolo come codice javascript, quindi memorizzandolo in un array ed eseguendolo. Tutti questi snippet di codice devono essere eseguiti esattamente una volta. Lo psuedocode segue come tale function fetch(foo){ if (foo in fooArray){ //Do Nothing else{ //Fetch foo via Ajax and execute foo() } } […]

Come faccio a scambiare atomicamente 2 ints in C #?

Cosa (se c‘è) è l’equivalente in C # dell’istruzione x86 asm xchg ? Con questo comando, che è un vero scambio (diversamente da Interlocked.Exchange ), potrei semplicemente scambiare atomicamente due inte, che è quello che sto provando a fare davvero. Aggiornare: Codice di esempio basato sul mio suggerimento. Le variabili “_V” con suffisso sono decorate […]

Cosa significa “atomico” nella programmazione?

Nel libro Effective Java, afferma: La specifica del linguaggio garantisce che la lettura o la scrittura di una variabile sia atomica a meno che la variabile non sia di tipo long o double [JLS, 17.4.7]. Cosa significa “atomico” nel contesto della programmazione Java o della programmazione in generale?