随笔分类 -  C++

C++primer
摘要:一、ATM机状态机模型 二、代码实现 2.1消息队列 实现了一个消息队列。其可以将消息以指针(指向基类)的方式存储在列表中;指定消息类型会由基类派生模板进行处理。推送包装类的构造实例,以及存储指向这个实例的指针;弹出实例的时候,将会返回指向其的指针。因为message_base类没有任何成员函数,在 阅读全文
posted @ 2022-09-07 11:44 〉外圆内方〈 阅读(110) 评论(0) 推荐(0)
摘要:第十三章 补充知识、线程池浅谈、数量谈、总结 一、补充一些知识点1.1 虚假唤醒:notify_one或者notify_all唤醒wait()后,实际有些线程可能不满足唤醒的条件,就会造成虚假唤醒,可以在wait中再次进行判断解决虚假唤醒。解决:wait中要有第二个参数(lambda),并且这个la 阅读全文
posted @ 2022-09-01 15:51 〉外圆内方〈 阅读(49) 评论(0) 推荐(0)
摘要:第十二节 windows临界区、其他各种mutex互斥量 一和二、windows临界区Windows临界区,同一个线程是可以重复进入的,但是进入的次数与离开的次数必须相等。C++互斥量则不允许同一个线程重复加锁。 windows临界区是在windows编程中的内容,了解一下即可,效果几乎可以等同于c 阅读全文
posted @ 2022-09-01 15:32 〉外圆内方〈 阅读(52) 评论(0) 推荐(0)
摘要:std::atomic续谈、std::async深入谈 一、std::atomic续谈 #include <iostream> #include <thread> #include <atomic> using namespace std; std::atomic<int> g_count = 0; 阅读全文
posted @ 2022-09-01 14:53 〉外圆内方〈 阅读(103) 评论(0) 推荐(0)
摘要:第十节 future其他成员函数、shared_future、atomic 一、std::future 的成员函数1、std::future_status status = result.wait_for(std::chrono::seconds(几秒));卡住当前流程,等待std::async() 阅读全文
posted @ 2022-09-01 11:09 〉外圆内方〈 阅读(59) 评论(0) 推荐(0)
摘要:第九节、async、future、packaged_task、promise 本节内容需要包含头文件#include <future> 一、std::async、std::future创建后台任务并返回值 std::async是一个函数模板,用来启动一个异步任务,启动起来一个异步任务之后,它返回一个 阅读全文
posted @ 2022-09-01 10:16 〉外圆内方〈 阅读(54) 评论(0) 推荐(0)
摘要:第八节 condition_variable、wait、notify_one、notify_all 一、条件变量condition_variable、wait、notify_one、notify_allstd::condition_variable实际上是一个类,是一个和条件相关的类,说白了就是等待 阅读全文
posted @ 2022-08-31 19:23 〉外圆内方〈 阅读(104) 评论(0) 推荐(0)
摘要:第七节 单例设计模式共享数据分析、解决,call_once 1.设计模式 程序灵活,维护起来可能方便,用设计模式理念写出来的代码很晦涩,但是别人接管、阅读代码都会很痛苦老外应付特别大的项目时,把项目的开发经验、模块划分经验,总结整理成设计模式中国零几年设计模式刚开始火时,总喜欢拿一个设计模式往上套, 阅读全文
posted @ 2022-08-31 16:58 〉外圆内方〈 阅读(57) 评论(0) 推荐(0)
摘要:第六节 unique_lock(类模板)详解 1.unique_lock取代lock_guard unique_lock比lock_guard灵活很多(多出来很多用法),效率差一点。 unique_lock<mutex> myUniLock(myMutex); 2.unique_lock的第二个参数 阅读全文
posted @ 2022-08-31 11:32 〉外圆内方〈 阅读(46) 评论(0) 推荐(0)
摘要:第五节 互斥量概念、用法、死锁演示及解决详解 一、互斥量(mutex)的基本概念 互斥量就是个类对象,可以理解为一把锁,多个线程尝试用lock()成员函数来加锁,只有一个线程能锁定成功,如果没有锁成功,那么流程将卡在lock()这里不断尝试去锁定。互斥量使用要小心,保护数据不多也不少,少了达不到效果 阅读全文
posted @ 2022-08-30 21:23 〉外圆内方〈 阅读(84) 评论(0) 推荐(0)
摘要:第四节 创建多个线程、数据共享问题分析、案例代码 一、创建和等待多个线程 #include <thread> #include <iostream> #include <vector> using namespace std; void TextThread() { cout << "我是线程" < 阅读全文
posted @ 2022-08-30 20:59 〉外圆内方〈 阅读(48) 评论(0) 推荐(0)
摘要:第三节 线程传参详解 一、传递临时对象作为线程参数要避免的陷阱1: #include <iostream> #include <thread> using namespace std; //void myprint(const int& i, char* pmbuf)void myprint(con 阅读全文
posted @ 2022-08-30 20:23 〉外圆内方〈 阅读(109) 评论(0) 推荐(0)
摘要:第二节 线程启动、结束,创建线程多法、join,detach 一、范例演示线程运行的开始 程序运行起来,生成一个进程,该进程所属的主线程开始自动运行;当主线程从main()函数返回,则整个进程执行完毕主线程从main()开始执行,那么我们自己创建的线程,也需要从一个函数开始运行(初始函数),一旦这个 阅读全文
posted @ 2022-08-30 16:57 〉外圆内方〈 阅读(55) 评论(0) 推荐(0)
摘要:一、并发、进程、线程的基本概念和综述 1.1 并发 两个或者更多的任务(独立的活动)同时发生(进行):一个程序同时执行多个独立的任务;以往计算机,单核cpu(中央处理器):某一个时刻只能执行一个任务,由操作系统调度,每秒钟进行多次所谓的“任务切换”。并发的假象(不是真正的并发),切换(上下文切换)时 阅读全文
posted @ 2022-08-30 15:47 〉外圆内方〈 阅读(106) 评论(0) 推荐(0)
摘要:如有错误,还请指正! 目前学C++学到将数组形参传递到函数中,对数组进行操作。 在编程时,由于传入指针是数组的头指针,函数并不知道数组的大小,我就差了一下资料,方法可能不全。 第一种方法,将数组的开始地址与结束地址作为形参,用了两种方法遍历:递归和while循环。 void OutPut(const 阅读全文
posted @ 2021-10-27 16:12 〉外圆内方〈 阅读(83) 评论(0) 推荐(0)