2010-05-29 9 views

risposta

17

No; nessuno dei C++ 11 operazioni atomiche o funzioni di supporto filo sono supportati da Visual C++ 2010.

Entrambe queste serie di funzioni sono supportate da Visual C++ 2012.

+0

Quanto male. Ho un'alternativa alla versione C++ 0x, quindi? – Electro

+0

@Electro: non esiste un'alternativa veramente portatile. Il supporto del compilatore è richiesto per una libreria di operazioni atomiche per garantire che le ottimizzazioni non violino l'atomicità delle operazioni. Si può esaminare [just :: thread] (http://www.stdthread.co.uk/) che implementa la libreria di thread 0x C++ e (almeno parti di) la libreria atomics per una manciata di piattaforme, tra cui Visual C++ 2010 (non è gratuito, ma anche non particolarmente costoso). –

+0

Sono a conoscenza del supporto del compilatore che è necessario per questo - beh, grazie comunque, e non sono disposto a spendere soldi per concederlo per il mio motore open source. – Electro

2

È possibile utilizzare tbb::atomic. Non è la stessa cosa dell'atomica C++ 0x, e non è pensata per essere una sostituzione o un sostituto temporaneo per loro, ma può essere utilizzata per eseguire le stesse attività di programmazione.

0

È necessario controllare Concurrency Runtime. È molto più completo rispetto alle offerte del comitato per gli standard C++ e viene fornito in VC10. Ovviamente non è particolarmente portatile, ma se lo desideri, i thread building thread di Intel possono funzionare per te.

2

InterlockedExchange, InterlockedIncrement e InterlockedDecrement potrebbero essere utili mentre attendiamo che VC++ 2012 li avvolga in wrapper conformi agli standard.

+0

Sono d'accordo. Pur avendo l'ultimo (vs12/cl18) ho ancora progetti basati sul 2010 con cui devo lavorare. – bvj