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

网站设计标注图怎么做dw网页制作步骤图片

网站设计标注图怎么做,dw网页制作步骤图片,个人免费网站,赣州创可通科技有限公司1 背景 STL的容器不是线程安全的#xff0c;我们经常会有需求要求数据结构线程安全#xff0c;比如写生产者消费者模型的时候#xff0c;就要求队列线程安全。利用std::queue和C线程标准库的一些组件#xff08;mutex#xff0c;condition_variable#xff09;#xff…1 背景 STL的容器不是线程安全的我们经常会有需求要求数据结构线程安全比如写生产者消费者模型的时候就要求队列线程安全。利用std::queue和C线程标准库的一些组件mutexcondition_variable可以写一个线程安全的队列ConcurrenceQueue。 2 思路梳理 需要4个函数 push入队pop出队并返回原来对头的元素如果为队空则阻塞tryPop出队并返回原来对头的元素如果队空返回空使用智能指针作返回类型非阻塞empty返回是否为空实则没啥用多线程条件下判空下一瞬间另一线程就可能push进去东西了。 3 实现代码 #ifndef __CONCURRENCEQUEUE_H__ #define __CONCURRENCEQUEUE_H__ #include mutex #include condition_variable #include deque #include queue #include memorytemplatetypename DATATYPE, typename SEQUENCE std::dequeDATATYPE class ConcurrenceQueue { public:ConcurrenceQueue() default;ConcurrenceQueue(const ConcurrenceQueue other){std::lock_guardstd::mutex lg(other.m_mutex);m_data other.m_data;}ConcurrenceQueue(ConcurrenceQueue ) delete;ConcurrenceQueue operator (const ConcurrenceQueue ) delete;~ConcurrenceQueue() default;bool empty() const {std::lock_guardstd::mutex lg(m_mutex);return m_data.empty();}void push(const DATATYPE data) {std::lock_guardstd::mutex lg(m_mutex);m_data.push(data);m_cond.notify_one();}void push(DATATYPE data) {std::lock_guardstd::mutex lg(m_mutex);m_data.push(std::move(data));m_cond.notify_one();}std::shared_ptrDATATYPE tryPop() { // 非阻塞std::lock_guardstd::mutex lg(m_mutex);if (m_data.empty()) return {};auto res std::make_sharedDATATYPE(m_data.front());m_data.pop();return res;}std::shared_ptrDATATYPE pop() { // 非阻塞std::unique_lockstd::mutex lg(m_mutex);m_cond.wait(lg, [this] { return !m_data.empty(); });auto res std::make_sharedDATATYPE(std::move(m_data.front()));m_data.pop();return res;}private:std::queueDATATYPE, SEQUENCE m_data;mutable std::mutex m_mutex;std::condition_variable m_cond; }; #endif 4 测试 全局的 ConcurrenceQueueint g_queue;void producer() { for (int i 0; i 100; i) {g_queue.push(i);std::this_thread::sleep_for(std::chrono::seconds(3));} }void consumer1() {while (1) {std::printf([1] ------- %d\n, *g_queue.pop());} }void consumer2() {while (1) {auto front g_queue.tryPop();std::printf([2] ------- %d\n, front ? *front : -1);std::this_thread::sleep_for(std::chrono::seconds(1));} } 测试 1消费者阻塞式消费 int main () {std::thread t1(producer);std::thread t2(consumer1);t1.join();t2.join();return 0; } 测试 2消费者非阻塞式消费但要sleep轮询 int main () {std::thread t1(producer);std::thread t2(consumer2);t1.join();t2.join();return 0; }
http://www.hkea.cn/news/14271111/

相关文章:

  • 上海网站建设小程序阿里云带宽5m能做什么网站
  • php除了做网站还能做什么搜狗搜索排名优化
  • 网站下载app连接怎么做六盘水网络推广
  • 帮人做网站一定要先收费网站做404是什么意思
  • 怎么做盗版电影网站吗数据网站怎么做的
  • 连云港市建设工程安全监督站网站请牢记此域名
  • 外贸网站建设和优化wordpress换行不显示
  • 云南网站建设企业wordpress导航图标
  • 南宁网站设涉县网站开发
  • 工艺礼品东莞网站建设南宁网站建设哪家公司实力强
  • 投融网站建设方案namecheap建站wordpress
  • php网站开发经理招聘淮安市哪里可以做网站
  • 做网站用备案吗肇庆企业建站模板
  • 阿里云做网站要几天金网科技有限公司
  • 2008 iis 配置 asp网站张家港专业做网站
  • 杭州网站建设商业深圳市公共资源交易中心官网
  • 买域名之后怎样做网站搜索引擎广告例子
  • 个人域名网站官网设计企业
  • 网站开发技术课程设计总结杭州大型网站建设
  • 做盗版视频网站吗页面设计公司
  • 网站模板html整站org域名做商业网站
  • 上海网站建设口碑最好的公司如何自学动漫设计
  • 营口网站优化发布软文是什么意思
  • 网站的ftp怎么查网站秒收录怎么做的
  • 企业网站建设方案范本网站色差表
  • wordpress 主题 名站正规招聘网站有哪些
  • wordpress免费网站南昌企业做网站设计
  • 机械设备东莞网站建设wordpress 内容可以是表格吗
  • 延吉市网站建设wordpress 多站点配置
  • 浙江平台网站建设制作网站做二级域名