- 博客(5)
- 收藏
- 关注
原创 Linux中生产与消费者模型、环形生产与消费者模型、线程池
线程池提前创建一批线程(最大数量限制),以及一个线程安全的任务队列,当大量的请求到来后,被添加到任务队列中,而线程池中的线程再不断从任务队列中获取任务进行处理即可。应用场景作用避免大量线程的频繁创建与销毁所带来的时间成本。避免峰值压力下的线程创建过多导致的导致资源耗尽的风险。(创建有最大数量上限)实现一个以上的线程+线程安全的队列使用C++封装一个线程池类,...
2019-12-16 19:05:17 170
原创 猴子分桃
题意老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。后来的小猴子都如此照办。最后剩下的桃子全部留给老猴子。这里有n只小猴子,...
2019-12-07 16:18:12 242 1
原创 不用加减乘除做加法
题意写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路分析用位操作符实现按位与&是查看两个数哪些二进制位都是1,这些都是进位位,结果需要左移一位,表示进位后的结果异或^是查看两个数哪些二进制位只有一个1,这些都是非进位位,可直接计算,表示非进位位进行加操作后的结果查看还有没有进位位,如果有,重复前两步;如果没有,保留x、y上二进制位1的部分,用...
2019-12-06 18:59:52 117
原创 变态青蛙跳台阶
题意一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路分析先列出跳上前几级台阶的方法:通过上图可以发现一个规律:当前要跳的台阶数等于要跳上前几个台阶的和。例如:f(4)=f(3)+f(2)+f(1)+f(0)。3.通过这个规律,我们可以得到一个状态转移方程:代码实现#include<iostream>...
2019-12-06 12:47:52 149
原创 Linux中线程的同步与互斥(互斥锁、条件变量、POSIX信号量)
线程安全与重入线程安全定义:多个执行流对同一个临界资源进行争抢访问,但不会造成数据二义或逻辑混乱。临界资源:多线程执行流共享的资源就叫做临界资源。实现:同步与互斥同步:通过同一时间只有一个线程能够访问临界资源来保证操作安全性互斥 :通过条件判断实现对临界资源访问的时序合理性大部分情况下,线程使用数据的都是局部变量,变量的地址空间在线程栈空间内,这种情况下,变量归属于单个线程,其他线...
2019-12-04 15:15:20 286
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人