原子操作std::atomic

std::atomic是 C++11 標準庫提供的一個模板類,用于實現原子操作。原子操作是指不會被線程調度機制打斷的操作,即這種操作一旦開始,就一直運行到結束,中間不會有任何線程切換。在多線程編程中,原子操作對于確保數據的一致性和避免數據競爭至關重要。

實際上,使用編譯器編譯的簡單語句,即使僅為簡單的輸入輸出,也是分步執行的,都不是原子操作。因此針對同一對象的訪問就有可能產生不可預料的問題。在單線程的程序中,標準庫提供的操作通常已經解決了這些問題。但在多線程環境中,如果多個線程同時訪問共享數據依然要考慮這類問題。一般的,可以使用互斥量就可以解決這個隱患。但是,這個方法往往很影響執行的效率。因此,針對一些僅對單個變量的共享數據的訪問,可以考慮使用原子操作來實現多線程安全的同時提高效率。

#include<iostream>
#include<thread>
#include<future>//使用原子操作要
using namespace std;int a = 0;//std::atmoic<int> a=0;原子操作void mythread()
{for (int i = 0; i < 10000; i++){a++;}
}
int main()
{thread myth(mythread);thread myth2(mythread);myth.join();myth2.join();cout << a << endl;//輸出結果往往是10000到20000中間的某個值。}
#include<iostream>
#include<thread>
#include<future>
using namespace std;std::atomic<bool> myend = false;void mythread()
{std::chrono::milliseconds dura(1000);while (myend == false){cout <<this_thread::get_id()<< "正在執行" << endl;std::this_thread::sleep_for(dura);}cout <<this_thread::get_id()<< "執行結束" << endl;return;
}
int main()
{thread myth(mythread);thread myth2(mythread);std::chrono::milliseconds dura(5000);std::this_thread::sleep_for(dura);myend = true;myth.join();myth2.join();}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11704.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11704.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11704.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

EasyExcel 導出,保留兩位小數并顯示 千分位

實體類 屬性類型為 BigDecimal 注解 NumberFormat("#,###.00") 試過了不頂用&#xff0c;原因不太清楚 值為 0.81 這種&#xff0c;導出后變為 .81 所以&#xff0c;換個思路&#xff0c;寫個轉換器&#xff0c;就是麻煩點 轉換器 BigDecimalConvert import cn.h…

【go項目01_學習記錄11】

操作數據庫 1 文章列表2 刪除文章 1 文章列表 &#xff08;1&#xff09;先保證文章已經有多篇&#xff0c;可以直接在數據庫中添加&#xff0c;或者訪問鏈接: localhost:3000/articles/create&#xff0c;增加幾篇文章。 &#xff08;2&#xff09;之前設置好了articles.ind…

【Web后端】監聽器Listener

1、簡介 用來監聽Servlet組件對象狀態發生變化的組件可以監聽的源包括:ServetRequest、HttpSession、ServletContext當監聽到事件源狀態發生變化時&#xff0c;會有對應的響應行為 2、使用方法 在web.xml文件中配置 <listener> <listener-class>com.coder.util.…

【DevOps】詳解 Linux 用戶和權限管理:添加用戶、分組及文件權限設置

目錄 1. 用戶管理 用戶分類 用戶相關文件 常用命令 2. 組管理 組相關文件 常用命令 3. 權限管理 文件權限 權限表示 修改權限 修改所有者和所屬組 特殊權限 4. 示例 命令的詳細解釋 權限解釋 示例&#xff1a;文件權限 -rw-r--r-- 的含義 在 Linux 中&#xf…

棧隊列經典OJ題(詳細過程)

1. 有效的括號 - 力扣&#xff08;LeetCode&#xff09; 第一題判斷有效的括號&#xff0c;這道題我們會用到棧的知識&#xff0c;棧是后進先出的&#xff0c;可以根據這個來解這道題&#xff0c;先看一下題目和示例。 1.1整體思路 我們通過示例可以看出括號匹配就返回true&am…

【JAVA】BOSS系統發版藝術:構建高效、優雅的微服務部署策略

在現代軟件開發領域&#xff0c;微服務架構與容器化部署已迅速成為行業新趨勢。微服務架構通過將應用拆分成多個小型、自治的服務單元&#xff0c;每個服務承擔某項特定的業務功能。而容器化部署則以其輕量級和高度可移植的特性&#xff0c;為這些微服務的有效打包、分發和運行…

機器學習 - 不同分類模型的比較

一、模型訓練 本案例中&#xff0c;我們將通過四種不同的模型來預測泰坦尼克號乘客的生存情況。 一下是訓練的具體步驟。 加載數據 從seaborn庫中加載目標數據。該數據集包括多個特征&#xff0c;如 PassengerId, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabi…

科技查新中的工法查新點如何確立與提煉?案例講解!

按《工程建設工法管理辦法》( 建 質&#xff3b;2014&#xff3d;103 號) &#xff0c;工法&#xff0c;是指以工程為對象&#xff0c;以工藝為核心&#xff0c;運用系 統工程原理&#xff0c;把先進技術和科學管理結合起來&#xff0c;經過一定工程實踐形成的綜合配套的施工方…

探索美國動態IP池:技術賦能下的網絡安全新篇章

在數字化飛速發展的今天&#xff0c;網絡安全成為了各行各業關注的焦點。特別是在跨國業務中&#xff0c;如何保障數據的安全傳輸和合規性成為了企業面臨的重要挑戰。美國動態IP池作為一種新興的網絡技術&#xff0c;正逐漸走進人們的視野&#xff0c;為網絡安全提供新的解決方…

黑馬甄選離線數倉項目day02(數據采集)

datax介紹 官網&#xff1a; https://github.com/alibaba/DataX/blob/master/introduction.md DataX 是阿里云 DataWorks數據集成 的開源版本&#xff0c;在阿里巴巴集團內被廣泛使用的離線數據同步工具/平臺。 DataX 實現了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre…

Java中List接口中方法的使用(初學者指南)

Java中List接口中方法的使用&#xff08;初學者指南&#xff09; 在Java中&#xff0c;List接口是Collection接口的子接口&#xff0c;它表示一個有序的集合&#xff0c;其中的元素都可以重復。List接口提供了許多額外的方法&#xff0c;用于對元素進行插入、刪除、查詢等操作…

計算機Java項目|Springboot學生讀書筆記共享

作者主頁&#xff1a;編程指南針 作者簡介&#xff1a;Java領域優質創作者、CSDN博客專家 、CSDN內容合伙人、掘金特邀作者、阿里云博客專家、51CTO特邀作者、多年架構師設計經驗、騰訊課堂常駐講師 主要內容&#xff1a;Java項目、Python項目、前端項目、人工智能與大數據、簡…

C++通過json文件配置參數

一、安裝nlohmann json nlohmann json&#xff1a;安裝_nlohmann安裝-CSDN博客 依次執行下面指令&#xff1a; git clone https://gitee.com/cuihongxi/mov_from_github.gitcd json-developmkdir buildcd buildcmake ..makesudo make install 二、安裝完成后使用 #include…

華為設備display查看命令

display version //查看版本信息 display current-configuration //查看配置詳情 display this //查看當前視圖有效配置 display ip routing-table //查看路由表 display ip routing-table 192.168.3.1 //查看去往3.1的路由 display ip interface brief //查看接口下ip信息 dis…

想跨境出海?云手機提供了一種可能性

全球化時代&#xff0c;越來越多的中國電商開始將目光投向了海外市場。這并不是偶然&#xff0c;而是他們在長期的市場運營中&#xff0c;看到了出海的必要性和潛在的機會。 中國的電商市場無疑是全球最大也最發達的之一。然而&#xff0c;隨著市場的不斷發展和競爭的日益加劇…

visual studio2022 JNI極簡開發流程

文章目錄 1 創建java類2 生成JNI頭文件3 使用visual studio2022創建DLL項目3.1 選擇模板中&#xff08;Windows桌面向導&#xff09;3.2 為項目命名3.3 選擇應用程序類型為動態鏈接庫3.4 項目概覽 4 導入需要的頭文件4.1 導入需要的頭文件4.2 修改頭文件 5 編寫C實現6 生成dll文…

服務器3389端口,服務器3389端口風險提示的應對措施

3389端口是Windows操作系統中遠程桌面協議&#xff08;RDP&#xff09;的默認端口。一旦該端口被惡意攻擊者利用&#xff0c;可能會導致未經授權的遠程訪問和數據泄露等嚴重安全問題。 針對此風險&#xff0c;強烈建議您采取以下措施&#xff1a; 1. 修改默認端口&#xff1a;…

Java面試之抽象類和接口

Java的一個重要特性就是抽象&#xff0c;抽象是指將具體的事物抽象成更一般化、更抽象化的概念或模型。在Java中&#xff0c;抽象可以通過抽象類和接口來實現&#xff0c;它們讓你能夠定義一些方法但不提供具體實現&#xff0c;從而讓子類去實現具體細節。 一、抽象類&#xf…

springboot3 集成spring-authorization-server (一 基礎篇)

官方文檔 Spring Authorization Server 環境介紹 java&#xff1a;17 SpringBoot&#xff1a;3.2.0 SpringCloud&#xff1a;2023.0.0 引入maven配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

識別AI論文生成內容,降低論文高AI率

AI寫作工具能幫我們在短時間內高效生成一篇畢業論文、開通報告、文獻綜述、任務書、調研報告、期刊論文、課程論文等等&#xff0c;導致許多人開始使用AI寫作工具作為撰寫學術論文的輔助手段。而學術界為了杜絕此行為&#xff0c;開始使用AIGC檢測系統來判斷文章是由AI生成還是…