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

建设一个网站要多少钱做电脑系统的网站

建设一个网站要多少钱,做电脑系统的网站,游戏开发需要学什么专业,怎么做类似淘宝网站吗C并发编程 等待与唤醒条件变量条件变量, 包括(std::condition_variable 和 std::condition_variable_any)定义在 condition_variable 头文件中, 它们都需要与互斥量(作为同步工具)一起才能工作.std::condition_variable 允许阻塞一个线程, 直到条件达成.成员函数void wait(std:…C并发编程 等待与唤醒条件变量条件变量, 包括(std::condition_variable 和 std::condition_variable_any)定义在 condition_variable 头文件中, 它们都需要与互斥量(作为同步工具)一起才能工作.std::condition_variable 允许阻塞一个线程, 直到条件达成.成员函数void wait(std::unique_lock:mutex lock);等待, 通过 notify_one(), notify_all()或伪唤醒结束等待void wait(std::unique_lock:mutex lock, Predicate pred);等待, 通过 notify_one(), notify_all()被调用, 并且谓词为 true 时结束等待.pred 谓词必须是合法的, 并且需要返回一个值, 这个值可以和bool互相转化cv_status wait_until(std::unique_lock:mutex lock, const std::chrono::time_point absolute_time);调用 notify_one(), notify_all(), 超时或线程伪唤醒时, 结束等待.返回值标识了是否超时.bool wait_until(std::unique_lock:mutex lock, const std::chrono::time_point absolute_time, Predicate pred);等待, 通过 notify_one(), notify_all(), 超时, 线程伪唤醒, 并且谓词为 true 时结束等待.cv_status wait_for(std::unique_lock:mutex lock, const std::chrono::duration relative_time);调用 notify_one(), notify_all(), 指定时间内达成条件或线程伪唤醒时结束等待bool wait_for(std::unique_lock:mutex lock, const std::chrono::duration relative_time, Predicate pred);调用 notify_one(), notify_all(), 指定时间内达成条件或线程伪唤醒时并且谓词为 true 时结束等待.void notify_one() noexcept; 唤醒一个等待当前 std::condition_variable 实例的线程void notify_all() noexcept; 唤醒所有等待当前 std::condition_variable 实例的线程一个线程安全的队列设计:#ifndef _THREAD_SAFE_QUEUE_#define _THREAD_SAFE_QUEUE_#include#include#include#includetemplateclassThreadSafeQueue{typedef std::queueQueue;typedef std::shared_ptrSharedPtr;typedef std::lock_guardMutexLockGuard;typedef std::unique_lockMutexUniqueLock;public:explicitThreadSafeQueue() {}~ThreadSafeQueue() {}ThreadSafeQueue(const ThreadSafeQueue) delete;ThreadSafeQueue operator(const ThreadSafeQueue) delete;bool IsEmpty() const{MutexLockGuard lk(mMutex);returnmQueue.empty();}void WaitAndPop(Tyvalue){MutexUniqueLock lk(mMutex);mConVar.wait(lk, [this] {return !mQueue.empty();});valuemQueue.front();mQueue.pop();}SharedPtr WaitAndPop(){MutexUniqueLock lk(mMutex);mConVar.wait(lk, [this] {return !mQueue.empty();});SharedPtr sp std::make_shared(mQueue.front());mQueue.pop();returnsp;}bool TryPop(Tyvalue){MutexLockGuard lk(mMutex);if (mQueue.empty())return false;valuemQueue.front();mQueue.pop();return true;}SharedPtr TryPop(){MutexLockGuard lk(mMutex);if (mQueue.empty())return false;SharedPtr sp std::make_shared(mQueue.front());mQueue.pop();returnsp;}void Push(const Tyvalue){MutexLockGuard lk(mMutex);mQueue.push(value);mConVar.notify_all();}private:mutable Mutex mMutex;ConditionVar mConVar;Queue mQueue;};#endif //_THREAD_SAFE_QUEUE_另一个版本, 使用 shared_ptr 作为成员对队列的性能有很大的提升, 其在push时减少了互斥量持有的时间, 允许其它线程在分配内存的同时,对队列进行其它操作.templateclassThreadSafeQueue{typedef std::shared_ptrSharedPtr;typedef std::queueQueue;typedef std::shared_ptrSharedPtr;typedef std::lock_guardMutexLockGuard;typedef std::unique_lockMutexUniqueLock;public:explicitThreadSafeQueue() {}~ThreadSafeQueue() {}ThreadSafeQueue(const ThreadSafeQueue) delete;ThreadSafeQueue operator(const ThreadSafeQueue) delete;bool IsEmpty() const{MutexLockGuard lk(mMutex);returnmQueue.empty();}void WaitAndPop(Tyvalue){MutexUniqueLock lk(mMutex);mConVar.wait(lk, [this] {return !mQueue.empty();});value std::move(*mQueue.front());mQueue.pop();}SharedPtr WaitAndPop(){MutexUniqueLock lk(mMutex);mConVar.wait(lk, [this] {return !mQueue.empty();});SharedPtr spmQueue.front();mQueue.pop();returnsp;}bool TryPop(Tyvalue){MutexLockGuard lk(mMutex);if (mQueue.empty())return false;value std::move(*mQueue.front());mQueue.pop();return true;}SharedPtr TryPop(){MutexLockGuard lk(mMutex);if (mQueue.empty())return false;SharedPtr spmQueue.front();mQueue.pop();returnsp;}void Push(const Tyvalue){SharedPtr p std::make_shared(value);MutexLockGuard lk(mMutex);mQueue.push(p);mConVar.notify_all();}private:mutable Mutex mMutex;ConditionVar mConVar;Queue mQueue;};std::future期望(std::future)可以用来等待其他线程上的异步结果, 其实例可以在任意时间引用异步结果.C包括两种期望, std::future(唯一期望) 和 std::shared_future(共享期望)std::future 的实例只能与一个指定事件相关联.std::shared_future 的实例能关联多个事件, 它们同时变为就绪状态, 并且可以访问与事件相关的任何数据.在与数据无关的地方可以使用 std::future 与 std::shared_future 的特化模板.期望对象本身并不提供同步访问, 如果多个线程要访问一个独立的期望对象, 需要使用互斥体进行保护.std::packaged_taskstd::packaged_task 可包装一个函数或可调用的对象, 并且允许异步获取该可调用对象产生的结果, 返回值通过 get_future 返回的 std::future 对象取得, 其返回的 std::future 的模板类型为 std::packaged_task 模板函数签名中的返回值类型.std::packaged_task 对象被调用时, 就会调用相应的函数或可调用对象, 将期望置为就绪, 并存储返回值.std::packaged_task 的模板参数是一个函数签名, 如 int(std::string, double*), 构造 std::packaged_task 实例时必须传入一个可以匹配的函数或可调用对象, 也可以是隐藏转换能匹配的.std::packaged_task:string std::string task([](std::stringstr) {std::stringstream stm;stm tid: std::this_thread::get_id() , str: str :endlstd::coutstd::this_thread::sleep_for(std::chrono::seconds(1));return std::string(MSG:Hello);});std::future:string f task.get_future();std::thread t(std::move(task), std::string(package task test));t.detach();//调用 f.get 返回结果, 但是须阻塞等到任务执行完成std::cout main tid: std::this_thread::get_id() , result: f.get() std::endl;std::promisestd::promise 类型模板提供设置异步结果的方法, 这样其他线程就可以通过 std::future 实例来索引该结果.classSquareRoot{std::promiseprom;public:SquareRoot(std::promisep) : prom(p) {}~SquareRoot() {}void operator()(doublex){if (x 0){prom.set_exception(std::make_exception_ptr(std::out_of_range(x0)));}else{double result std::sqrt(x);prom.set_value(result);}}};std::promiseprom;SquareRoot p(prom);std::thread t(std::bind(SquareRoot::operator(), p, 1));//std::thread t(std::bind(SquareRoot::operator(), p, -1));std::future f prom.get_future();try{double v f.get();std::cout value: v :endl}catch (std::exceptione){std::cout exception: e.what() :endl}t.join();
http://www.zqtcl.cn/news/404188/

相关文章:

  • 主流网站开发语言有哪些电子邮件营销
  • 扫描二维码进入公司网站怎样做在万网上域名了怎么做网站
  • 销售型网站设计怎么做网站广告位
  • 网站推广的方法ppt购物网站logo
  • 网站关键词分割wordpress为展示的作品投票
  • 建立网站 域名 服务器吗wordpress超链接出错
  • 外贸开发网站建设注册会计师协会
  • 莆田建设网站dw网页设计作品及源码
  • 360免费建站视频淘宝客的网站怎么做
  • 四川自助seo建站短视频推广计划
  • 网站建设案例的公司黄冈网站建设公司
  • 做淘客网站需要营业执照吗制作网站公
  • 手机网站开发的目的鲁班设计远程工作
  • 宿迁网站建设要多少钱高密市住房和城乡建设局网站
  • 咸阳网站建设公司哪家好wordpress访客ip记录
  • 厦门建设银行网站那个网站做效果图电脑配置
  • 人才网站建设医院网站建设的好处
  • 房屋装修网站模板html5做网站
  • 网站建设需要的硬件网站建设知名公司排名
  • 绥化网站建设私自搭建vps犯法吗
  • 建设专业网站哪家比较好小程序源码是什么意思
  • 网站设计一般包括什么给公司做网站数据分析
  • 网站根目录在哪里1024cctvcom戊人影祝
  • wordpress转发微信南宁seo企业优化
  • 红旗渠建设集团网站昭通网络推广
  • 海陵区建设局网站计算机网站建设考试试卷
  • 佛山做网站3lue网站开发招标网
  • 粘贴以下代码到网站首页代码的与标签之间渭南软件开发
  • 企业网站建设必要性上海网站建设报价表
  • 陕西省建设厅申报网站一个主体如何添加网站