C类++C++11语言C++14语言C++17C++20语言遍历器学习C++模板

什么是现代C++中的原子(std::Atomic)?

什么是现代C语言中的原子标准++

在现代C++中,并发支持库旨在解决多线程操作中的问题。此库包含对线程的内置支持(标准::线程),原子操作(标准::原子),互斥(标准::互斥),条件变量(标准::condition_variable)以及的许多其他功能现代C++编译器.在这篇文章中,我们解释了什么是标准::原子以及我们如何在现代C++中有效地使用原子类型。

什么是现代C++中的原子(std::atomic)?

在现代C++中,原子库为原子操作提供了有用的功能,允许C++中的无锁并发操作。对于涉及同一对象的任何其他原子操作,每个原子操作都是不可分割的。

C++11添加原子类型和操作符合标准。原子类型和操作提供了一种在不使用锁的情况下编写多线程应用程序的方法。在现代C++中标准::原子<>模板类在中定义<原子>header,它可以用于包装其他类型,以便对该类型执行原子操作。当一个线程写入一个原子对象时,另一个线程可以从中读取标准::原子模板定义了原子类型。

原子类型确保任何读或写操作作为多线程操作的一部分进行同步(即在标准::线程). 它们在私有类型(即。整数,浮动,双重的(等)或任何普通可复制类型的类型,这意味着它至少有一个合格的复制构造函数、移动构造函数、复制赋值运算符或移动赋值运算符,并且具有未删除的普通析构函数。

以下是原子声明的简单语法:

以下是中定义的语法<原子>自C++11以来的标头:

以下是在<内存>自C++20以来的标头:

标准::原子具有许多可用于原子操作的功能,即。load、store、operator=、wait、exchange、is_lock_free、,这些将在另一篇文章中解释。

有没有一个简单的例子说明如何在现代C++中使用std::atomic?

这里有一个简单的标准::原子例子:

在现代C++中,有没有一个完整的例子来说明如何在lambda中使用std::atomic?

这是一个完整的标准::原子使用的示例标准::线程、和标准::矢量:

注意,这些原子类型上的每个操作都称为原子操作。有关此功能的更多信息,请参阅原子操作提案文件.

现代C++C++Builder徽标中的原子stdatomic是什么

C++生成器是在Windows、MacOS、iOS和Android操作系统上构建简单或专业应用程序的最简单、最快的C和C++IDE。对于初学者来说,它也很容易学习,它有广泛的示例、教程、帮助文件和对代码的LSP支持。RAD Studio的C++Builder版本附带用于高性能本机Windows应用程序的屡获殊荣的VCL框架,以及用于跨平台UI的强大FireMonkey(FMX)框架。

有一个免费的C++Builder社区版,面向学生、初学者和初创公司;可以从下载在这里。对于专业开发人员,有professional、Architect或Enterprise版本。

哦,你好👋
很高兴见到你。

注册后,每天都可以在收件箱中接收精彩的C++内容。

我们不发垃圾邮件!阅读我们的隐私政策了解更多信息。

关于作者

Yilmaz Yoru博士有35年以上的编码经验,使用了30多种编程语言,主要是Windows、Android、Mac-OS、iOS、Linux和其他一些操作系统上的C++。他毕业于Eskisehir Osmangazi大学机械工程系,并获得硕士和博士学位。他是ESENJA LLC公司的创始人兼首席执行官。他的兴趣是编程、热力学、流体力学、人工智能、2D和3D设计以及高端创新。
相关职位
C类++C++11语言C++14语言C++17C++20语言C简介++学习C++

如何学习现代C++中的Move构造函数?

C类++C++17代码段学习C++

如何在C++中将字符数组字符串正确转换为Unicode字符串?

人工智能技术C类++语言功能学习C++

如何用C语言开发简单的Hopfield网络++

C类++C++11语言C++14语言C++17C++20语言C简介++学习C++语法

学习现代C语言中类的默认构造函数++