主要网站域名,织梦网站必须下载地址,个人网站设计论文ppt,湖北网络营销推广怎么做1、原子类型和原子操作#xff08;1#xff09;类型#xff08;2#xff09;操作#xff08;3#xff09;详述● 原子类型只能从其模板参数类型中进行构造#xff0c;标准不允许原子类型进行拷贝构造、移动构造#xff0c;以及使用operator等● atomic_flag 是一个原子…1、原子类型和原子操作1类型2操作3详述● 原子类型只能从其模板参数类型中进行构造标准不允许原子类型进行拷贝构造、移动构造以及使用operator等● atomic_flag 是一个原子的布尔类型无锁的即线程对其访问不需要加锁可支持test_and_set()是一种原子操作用于在一个内存空间原子地写入新值并且返回旧值如果对象被设置了则返回trueclear()清除对象值将变量值设为false2、内存模型顺序一致性和memory_order1类型2详述● x86以及SPARC(TSO模式都被看作是采用强顺序内存模型的平台而Alpha、PowerPC、ArmV7等平台则采用弱顺序内存模型● 存在弱顺序的内存模型原因可使得处理器进一步发掘指令中的并行性使得指令执行的性能更高● 默认情况下原子类型的变量在线程中总是保持着顺序执行的特性。● 原子存储操作store可使用relaxed seq_cst release原子写操作load可使用relaxed seq_cst acquire consume可读可写操作可使用所有● 先于发生关系总是传递的3、线程局部存储1拥有线程生命周期及线程可见性的变量2如POSIX标准中的错误码全局变量errno在多线程中将遭遇问题3c11中的解决方法是通过thread_local 修饰符声明变量即可如int thread_local errCode则errCode在线程开始时被初始化而在线程结束时该值不在有效4、快速退出1teminate函数没有被捕捉的异常就会导致其被调用其默认是去调用abort函数。可通过set_terminate函数改变默认行为2abort不会调用任何析构函数terminate默认下也一样抛出信号SIGABRT3exit属于正常退出范畴的程序终止会正常调用自动变量的析构函数且会调用atexit注册的函数调用次序与其注册顺序相反4在C11中引入quick_exit该函数并不执行析构函数而只是使程序终止。与abort不同abort是异常退出quick_exit和exit同属于正常退出。也可使用at_quick_exit注册函数转载于:https://blog.51cto.com/yebaoshan/2108101