当前位置: 首页 > news >正文

乐都网站建设哪家好/短视频赚钱app软件

乐都网站建设哪家好,短视频赚钱app软件,莱芜seo,黄岩网站开发一:概述 线程同步是多线程编程中的一个重要概念,它用于控制多个线程之间对共享资源的访问,避免竞态条件(race condition)和数据不一致的问题。线程同步确保在多线程环境中,多个线程访问共享数据时能够按照某…

一:概述

        线程同步是多线程编程中的一个重要概念,它用于控制多个线程之间对共享资源的访问,避免竞态条件(race condition)和数据不一致的问题。线程同步确保在多线程环境中,多个线程访问共享数据时能够按照某种预定的顺序或规则进行,以保证程序的正确性和稳定性。

二:线程同步方法

        1. 信号量


#include <iostream>
#include <semaphore>
#include <thread>
#include <vector>std::vector<int> myVec{};std::counting_semaphore<1> prepareSignal(0);void prepareWork() {myVec.insert(myVec.end(), {0, 1, 0, 3});std::cout << "Sender: Data prepared."  << '\n';prepareSignal.release();
}void completeWork() {std::cout << "Waiter: Waiting for data." << '\n';prepareSignal.acquire();myVec[2] = 2;std::cout << "Waiter: Complete the work." << '\n';for (auto i: myVec) std::cout << i << " ";std::cout << '\n';}int main() {std::cout << '\n';std::thread t1(prepareWork);std::thread t2(completeWork);t1.join();t2.join();std::cout << '\n';}

        2. 条件变量

#include <iostream>
#include <condition_variable>
#include <mutex>
#include <thread>
#include <vector>std::mutex mut;
std::condition_variable condVar;std::vector<int> myVec{};void prepareWork() {                                       {std::lock_guard<std::mutex> lck(mut);myVec.insert(myVec.end(), {0, 1, 0, 3});           }std::cout << "Sender: Data prepared."  << '\n';condVar.notify_one();
}void completeWork() {                                       std::cout << "Waiter: Waiting for data." << '\n';std::unique_lock<std::mutex> lck(mut);condVar.wait(lck, [] { return not myVec.empty(); });myVec[2] = 2;                                           std::cout << "Waiter: Complete the work." << '\n';for (auto i: myVec) std::cout << i << " ";std::cout << '\n';}int main() {std::cout << '\n';std::thread t1(prepareWork);std::thread t2(completeWork);t1.join();t2.join();std::cout << '\n';}

        3. Atomic


#include <atomic>
#include <iostream>
#include <thread>
#include <vector>std::vector<int> myVec{};std::atomic<bool> atomicBool{false};void prepareWork() {myVec.insert(myVec.end(), {0, 1, 0, 3});std::cout << "Sender: Data prepared."  << '\n';atomicBool.store(true);atomicBool.notify_one();}void completeWork() {std::cout << "Waiter: Waiting for data." << '\n';atomicBool.wait(false);                                myVec[2] = 2;std::cout << "Waiter: Complete the work." << '\n';for (auto i: myVec) std::cout << i << " ";std::cout << '\n';}int main() {std::cout << '\n';std::thread t1(prepareWork);std::thread t2(completeWork);t1.join();t2.join();std::cout << '\n';}

        4. Promise - Feature 

#include <iostream>
#include <future>
#include <thread>
#include <vector>std::vector<int> myVec{};void prepareWork(std::promise<void> prom) {myVec.insert(myVec.end(), {0, 1, 0, 3});std::cout << "Sender: Data prepared."  << '\n';prom.set_value();                                    }void completeWork(std::future<void> fut){std::cout << "Waiter: Waiting for data." << '\n';fut.wait();                                           myVec[2] = 2;std::cout << "Waiter: Complete the work." << '\n';for (auto i: myVec) std::cout << i << " ";std::cout << '\n';}int main() {std::cout << '\n';std::promise<void> sendNotification;auto waitForNotification = sendNotification.get_future();std::thread t1(prepareWork, std::move(sendNotification));std::thread t2(completeWork, std::move(waitForNotification));t1.join();t2.join();std::cout << '\n';}

http://www.jmfq.cn/news/5337055.html

相关文章:

  • 中国海洋大学站群网站建设/百度竞价排名事件
  • 云南建设招标网站首页/百度云搜索引擎入口官方
  • 成都网站建设 四川冠辰科技/百度公司招聘官网最新招聘
  • 泰州建设局网站安监站通报/seo概念的理解
  • 加强网站建设考察交流/现在推广用什么平台
  • 建设网站市场细分/中国互联网协会
  • 山东政府网站信息内容建设/网站推广方法
  • 运动服饰网站建设项目规划书/seo域名综合查询
  • 丹阳网站建设报价/荥阳网络推广公司
  • 德州建设网站/免费网站注册com
  • 为什么网站显示正在建设/好视通视频会议app下载安装
  • 网站建设报价网站建设报价单/深圳seo优化外包
  • 网站建设就业/搜索引擎seo外包
  • 宜春网站建设哪家专业/技能培训网
  • 双牌网站建设/二级网站怎么做
  • 网站建设微企/公司网络推广方法
  • 网站建设推广途径/大型网站建设平台
  • 温岭网站建设/网络营销费用预算
  • 磐石市住房和城乡建设局网站/sem是什么意思中文
  • 中国建设银行官网站账户商品/开平网站设计
  • 东莞网站建设优化东莞/小红书关键词排名怎么做
  • 市住房城乡建设委网站/搜索引擎网站排名优化方案
  • 项目网站建设应入哪个科目/新闻热搜榜 今日热点
  • 科技杭州网站建设/网站关键词
  • 深圳企业医疗网站建设/如何查询网站收录情况
  • 二手车网站建设意见/关键词挖掘排名
  • 网站建设结构方案/站长工具app下载
  • 企业网站建设的成本/网盘资源
  • 网站建设新闻网站/在线培训系统平台
  • 花卉网站建设规划书/平面设计