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

免费网站建设软件北京seo优化

免费网站建设软件,北京seo优化,福州网站建设服务公司,做网站网页维护 手机App 开发一:概述 线程同步是多线程编程中的一个重要概念,它用于控制多个线程之间对共享资源的访问,避免竞态条件(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.tj-hxxt.cn/news/65640.html

相关文章:

  • 定制开发电商网站建设网络营销的八大职能
  • 公众号制作教程seo相关ppt
  • javaee做网站百度竞价托管外包代运营
  • 网站建设可行性分析短视频seo厂家
  • 南昌县城乡规划建设局官方网站百度关键词刷搜索量
  • 房产资讯的网站怎么做软文范例大全500字
  • 适合新手做的小生意seo具体怎么优化
  • 工信部网站备案验证码关键词自动优化
  • 什么是电子商务网站建设微信搜索seo优化
  • 广东手机网站建设semifinal
  • 旅游网站效果图郑州seo排名第一
  • 群晖服务器做网站网络营销成功案例
  • 定海区住房和城乡建设局网站上海seo推广外包
  • 西宁网站建设开发推广关键词排名
  • 青岛做网站定制cilimao磁力猫搜索引擎
  • 企业网网站友情链接怎么设置
  • 做网站市场大不大网络营销环境
  • 自开发购物网站seo关键词快速获得排名
  • 怎么做app下载网站社群营销是什么意思
  • 营销网站策划今日新闻摘抄十条
  • 网站建设指南国家卫健委每日疫情报告
  • 自己做的网站打不开是什么原因seo服务靠谱吗
  • 专业做域名的网站汽车网站建设
  • 做网站关键词智能营销方法
  • nas 做网站服务器怎么联系地推公司
  • 如何对网站做进一步优化竞价推广开户电话
  • 响应式网站搭建微信小程序免费制作平台
  • appserv做网站教程广州百度推广代理公司
  • 广告设计专业自我介绍旺道优化软件
  • 红月私服网站怎么做网络营销比较常用的营销模式