Visual C++ 2010 是否支持原子类型?

15

VC++ 2010支持C++11的可移植原子类型模板吗?

5个回答

18

不支持任何C++11原子操作或线程支持特性,这也包括Visual C++ 2010.

这两个特性集合都由Visual C++ 2012支持。


多么邪恶啊。那我有C++0x版本的替代方案吗? - Electro
@Electro: 没有真正可移植的替代方案。需要编译器支持原子操作库,以确保优化不会违反操作的原子性。您可以查看just::thread,它实现了C++0x线程库和(至少部分)原子库,适用于少数平台,包括Visual C++ 2010(它不是免费的,但也不是特别昂贵)。 - James McNellis
我知道编译器支持是必需的 - 无论如何,还是谢谢,但我不准备为我的开源引擎购买许可证。 - Electro
3
Boost 1.5.3提供原子类型。请参见:http://www.boost.org/doc/libs/1_53_0/doc/html/atomic.html。 - Helge Klein

2
您可以使用tbb::atomic。它与C++0x原子操作不同,实际上并不是它们的替代品或临时替代品,但可以用于完成相同的编程任务。

2

在等待VC++ 2012将它们包装成符合标准的包装器之际,InterlockedExchange、InterlockedIncrement和InterlockedDecrement可能对您有用。


我同意。尽管我拥有最新的(vs12/cl18),但我仍然必须处理基于2010的项目。 - bvj

0
你应该看看并发运行时(Concurrency Runtime)。它比C++标准委员会提供的更全面,并且在VC10中提供。当然,这并不是特别可移植的,但如果你需要的话,英特尔的线程构建块(Thread Building Blocks)可以为你工作。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接