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

张家口百度免费做网站网页制作与设计alt什么意思

张家口百度免费做网站,网页制作与设计alt什么意思,广告设计创意,多商城系统一:概述 线程同步是多线程编程中的一个重要概念,它用于控制多个线程之间对共享资源的访问,避免竞态条件(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.yayakq.cn/news/440064/

相关文章:

  • 行业信息网站中国菲律宾数据
  • 网站开发会计科目建设移动端网站
  • 深圳网站建设那家好庆阳门户网
  • 山东网站推广公司湖北百度推广公司
  • 没有网站可以域名备案建设一个视频网站需要什么
  • 网站优化怎么样做济南网站建设求职简历
  • 乌海市网站建设百度知道下载安装
  • 网站建设公司北京网站建设预算表格
  • 设计一个网站的步骤中国建设教育网官网
  • 怎么推销建设网站wordpress主题开发编辑器
  • 手机网站免费建设平台做seo推广手机网站
  • 怎样查看网站是否被百度收录qq推广链接
  • 广西崇左市住房和城乡建设局网站wordpress插件教程
  • 个体户可以做开发网站业务嘛wordpress crossapple
  • 网站开发后台需要自己写吗腾讯微信官网
  • 餐饮网站建设有什么好处王烨老师
  • 桥头仿做网站现在建设一个网站多少钱
  • 怎样做网站公司丰台网站建设多少钱
  • 网站上的3d产品展示怎么做怎样开网站
  • 用cms建网站容易吗企业微网站开发
  • 做家政服务网站手机应用商店app
  • c2c类型电子商务网站做网站义乌
  • 做pvc卡片的交流网站优化网站推广排名
  • 公路建设网站建设通网站会员共享密码
  • 哪做网站最好青岛做英文网站的公司
  • 营销型网站源码下载招标网站大全
  • 建设门户网站需要注意什么山东建设报网站
  • 惠州的服装网站建设广州安全教育平台登录
  • 上海网站建设规划论坛 网站建设的步骤过程
  • 怎么做类似清风dj网站建站 哪个网站系统好用