C++: STL: atomic

news/2024/7/4 1:43:36

文章目录

  • 参考
  • 易犯的错误
  • 产生错误的原因
  • 正确的方法

参考

https://en.cppreference.com/w/cpp/atomic/atomic

易犯的错误

atomic flag(false);
thread th1;
352 void a() {
356 if (flag == false) {
357 th1= thread(&func);
358 flag= true;
359 }
360 }

这里直接对flag做等号判断。如果在多线程的情况下,这个操作本身是原子操作;
但是对于整个a函数里的if块来说,却不是原子操作,达不到共享数据的保护,因为if整个代码块是要求原子操作。多个线程可能同时判断flag在flase状态,从而导致随机问题的出现。

产生错误的原因

这个错误产生的原因是,没有系统的学习stl库,直接写代码,将原有逻辑,用在新事物上,经常会出现这种错误。

正确的方法

正确的方法是使用模板提供的方法:compare_exchange_strong,让判断与赋值在一个原子操作里做完。


http://www.niftyadmin.cn/n/1525691.html

相关文章

C++: std::call_once vs atomic

文章目录 简介引子分析深入pthread_once对比简介 这里不是介绍call_once的详细用法,可以在网上搜。https://en.cppreference.com/w/cpp/thread/call_once 这里介绍一下call_once在glibc++里的实现,与atomic的对比。 引子 有个同事,犯了一个错误,详情见:https://mzhan01…

Kernel:glibc: pthread_create 返回 EPERM (1)错误分析

文章目录参考解决方法遇到了一个返回1(permission deny的错误)参考 https://stackoverflow.com/questions/9313428/getting-eperm-when-calling-pthread-create-for-sched-fifo-thread-as-root-on-lin 解决方法 https://blog.csdn.net/qq_36428903/art…

Openssl, Alert, Fatal, handshake failure 40

文章目录 错误原因代码错误 在测试人员发现,客户端发送到服务端的Client Hello消息被拒掉了,原因是: Transport Layer Security TLSv1.2 Record Layer: Alert (Level: Fatal, Description: Handshake Failure) Content Type: Alert (21) Version: TLS 1.2 (0x0303) Length:…

Linux: 命令:echo

文章目录软件使用说明需要注意的问题软件 [root10 ~]# which echo /usr/bin/echo [root10 ~]# file /usr/bin/echo /usr/bin/echo: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x 86-64.so.2, for GNU/Linux 3…

c/c++ 静态代码检查工具

文章目录道理呢大家都懂,但是需要时间消化,而且人还是易犯错误的动物lintgcc 12sonarqube道理呢大家都懂,但是需要时间消化,而且人还是易犯错误的动物 所以才有了,这些个静态代码检查工具。 lint 古老的工具。 Lint…

gcc: error: : No such file or directory

分享的原因,一开始把我给唬住了,怎么可能出现这个错误! /usr/bin/gcc ‘’ a.c // 注意这里有一对单引号,gcc 认为这个单引号里的也是个文件,不过是一个空串,找不到。所以报下面的错误,一开始感…

工具软件:Citrix

文章目录简介遇到的问题输入发的问题屏幕大小问题https://help-docs.citrix.com/zh-cn/citrix-workspace-app/windows/about.html简介 看着还是很强的,可以让用户远程访问桌面,应用程序 适用于 Windows 的 Citrix Workspace 应用程序提供使用 Citrix Vi…

Coredump 问题分析思路

欢迎大家提意见。 Windows 编程推荐文章 https://blog.csdn.net/chenlycly/article/details/124996473