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

免费网站建设软件网络管理系统

免费网站建设软件,网络管理系统,网站建设策划书提纲,lumen 做企业网站一:概述 线程同步是多线程编程中的一个重要概念,它用于控制多个线程之间对共享资源的访问,避免竞态条件(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.zhongyajixie.com/news/50898.html

相关文章:

  • c .net网站开发入门关键词排名怎么做上去
  • adsense用什么网站做此网站三天换一次域名
  • wordpress 更改编辑器辽宁seo推广
  • wordpress菜伪静态邯郸seo优化
  • 兰州网站设计推送者seo
  • 网站建设的客户需求分析调研表百度引擎的搜索方式是什么
  • 域名解析到本地服务器seo咨询岳阳
  • 网站建设需要找工信部吗制作网页app
  • redhat7做网站过程百度推广是什么工作
  • 企业信息公示管理系统河南seo优化文章网站
  • 做婚介网站可行性报告模板百度热门排行榜
  • 广州 网站制作下载百度官方网站
  • 河南网站排名优化价格百度页面
  • 有没有医学生做课件的网站国内比百度好的搜索引擎
  • 江津区城乡建设委员会网站推广方案范例
  • 塘沽信息网站关键词优化软件效果
  • 做网站方案怎么写代做seo关键词排名
  • 企业设计网站建设百度题库
  • 小程序网站seo网页优化公司
  • 网站建设最新技术seo网络营销招聘
  • 商丘做微信网站sqwyy搜盘网
  • mlb手表网站百度推广关键词怎么设置好
  • 做房产网站需要注意什么美发培训职业学校
  • wordpress 命令执行网址seo查询
  • 在喵窝网站怎么做图怎么样推广最有效最快速
  • 有云服务器怎么做网站东莞seo
  • 白云区网站建设公网络营销专业是干什么的
  • 合肥html5网站建设免费写文案神器
  • 域名未做运行网站解析重庆网站优化公司
  • 网站后台登陆不了搜索热度和搜索人气