- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 C++实现线程池
实现线程池✏ 线程池???? 1、作用:异步解耦线程池的运行逻辑:线程池中的线程在不断竞争任务队列中的任务。???? 2、组成任务队列线程集合管理组件???? 3、TODO增加线程删除过度冗余的线程快手面试题:查询一个任务是否被执行完,生产者消费者模式(任务队列用环形阻塞队列即可)头条面试题:如果一个任务在执行过程中线程被中断(也许是时钟周期已到,也许是等待资源,也许是被中断,等等),后面怎样保证继续被同一个线程执行。C-glibc实现#include <stdi
2020-10-29 14:46:44
879
原创 C++实现环形队列
实现环形队列线性队列原理图:假设是长度为5的数组,初始状态,空队列如所示,front与 rear指针均指向下标为0的位置。然后入队a1、a2、a3、a4, front指针依然指向下标为0位置,而rear指针指向下标为4的位置。出队a1、a2,则front指针指向下标为2的位置,rear不变,如下图所示,再入队a5,此时front指针不变,rear指针移动到数组之外 ,造成假溢出的现象:为了解决这个问题,引入了循环队列的概念。循环队列原理图:可以看到当循环队列属于上图的d1情况时,是无法判断
2020-10-29 14:44:05
3371
3
原创 C++实现阻塞队列
实现阻塞队列阻塞队列是后台开发中多线程异步架构的基本数据结构,像python,java 都提供线程安全的阻塞队列,c++ 可能需要自己实现一个模板。阻塞队列阻塞队列:阻塞队列是一个在队列基础上又支持了两个附加操作的队列。支持阻塞的插入方法:队列满时,队列会阻塞插入元素的线程,直到队列不满。支持阻塞的移除方法:队列空时,获取元素的线程会等待队列变为非空。阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。简而言之,阻塞队列是生产者用来存放元素、消费
2020-10-29 14:36:24
2875
原创 双线程交替打印
实现双线程交替打印C++实现双线程交替打印1~20之内的数。两个条件锁std::mutex mtx;std::condition_variable cond1, cond2;static int num = 1;void thread1(){ while(true){ unique_lock<mutex> lock(mtx); cout << "Thread 1 :" << num << endl;
2020-10-29 14:32:39
179
原创 数据结构:线性表
1、线性表1.1、基本技能 null/nil 异常处理 dummy node 哑巴节点 快慢指针 对结点进行增、删、改、查等操作 翻转链表 合并两个链表 找到链表的中间节点 无法高效获取长度,无法根据偏移快速访问元素,是链表的两个劣势。然而面试的时候经常碰见诸如获取倒数第k个元素,获取中间位置的元素,判断链表是否存在环,判断环的长度等和长度与位置有关的问题。这些问题都可以通过灵活运用双指针来解决。 双指针并不是固定的公式,而是一种思维
2020-10-08 17:31:06
143
原创 C标准库之stdarg
✏ 1、可变长参数C语言支持可变长参数,正常情况下C的函数参数入栈规则为__stdcall,它是从右到左的,即函数中的最右边的参数最先入栈。例如,对于函数:void func(int a, char b, int c, double d, int e) { int f = 0; printf("&a = 0x%p\n", &a); printf("&b = 0x%p\n", &b); printf("&c = 0x%p\n", &a
2020-10-08 15:37:11
2196
原创 C标准库之errno
<errno.h>定义了整数变量extern int errno。errno是一个由POSIX和ISO C标准定义的符号,由系统调用和某些库函数根据事件来设置它,用以表明哪里有问题。这个值只有当调用的返回表明错误的时候有用(比如,对于大多数的系统调用是-1,对于大多数的库函数来说是-1或NULL),正确的函数也可以修改errno。Linux中系统调用的错误都存储于 errno 中,errno 由操作系统维护,存储就近发生的错误,即下一次的错误码会覆盖掉上一次的错误。在程序启动时,errno
2020-10-08 15:20:58
1900
原创 C标准库之stdio
✏ 1、函数???? 1.1、二进制IOsize_t fread( void *buffer, size_t size, size_t count, FILE *stream );size_t fwrite ( void *buffer, size_t size, size_t count, FILE *stream );buffer是用于保存数据的内存指针,size是缓冲区字节数,count是读入/写入的元素数,stream是目标流。???? 1.2、文件访问// 使用给定的模式 mode
2020-10-08 15:15:03
577
原创 函数指针 & 回调函数
✏ 1、指针函数指针函数: 本质是一个函数,不过它的返回值是一个指针。其声明的形式如下所示:ret *func(args, ...);指针函数和普通函数没有区别,但有一点需要注意的是: 避免出现返回局部变量指针的情况。 看例子:int* getSum(int n){ if (n < 0) return NULL; int sum = 0; // static int sum = 0; for (int i = 0; i < n; i++)
2020-10-08 15:08:45
384
Java版CORBA的小程序
2018-01-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人