关于线程池是很早就想去看的,在github上找了star最多的C++ 11 版本,然而一下子看不懂,就搁置在那了。 因为昨天百度面试问到了,我甚至回答我看过但是没看完,有点尴尬,今天花了点时间学了一下基础,并对源码进行了注解。 github 地址 先说一下我现在对上面这个线程池实现原理的理解。 理解之后可以说是很简单了,这个线程池本质上是互斥和条件变量的妙用。 我先开一个事件队列,再开几个线程,首先这些线程在整体上都是死循环,但会在事件队列为空的时候进入睡眠状态(由条件变量控制)。当事件队列非空,那么我就从事件队列中取出一个事件,再将这个事件搭载在线程上运行。事件运行结束后这个线程进入下一个循环,…

前几天因为一直在看IPC(进程间通信),有几个问题去搜的时候无意中发现这些IPC方法其实以及不大常用了,最最常用的还是socket…… 我是一直以为socket只会在网络上使用较多,其他不大会使用,现在发现我可能真的错了,于是打算把学IPC的精力放在巩固和加深socket上,其他IPC只做大概了解。 最基础的 TCP 套接字编程 暂时只贴注释代码 Server /* *********************************************************************** > File Name: k_server.cpp > Author: Key > Mail:…

瞎看了一点博客自认为搞懂,现在没什么时间写代码,写简单记下来。 shared_ptr的是一种“引用计数型智慧指针”(RCSP),它最核心的本质在于引用计数。 并且这个引用计数器也是一个类指针。 除开这个引用计数器以外,自然还有本重要的指针了,除此之外就没有其他的成员变量。 shared_ptr与uniqe_ptr的重要区别在于,unique_ptr只能指向一个对象,这是由它的析构函数决定的,因为析构函数必定会释放掉指针所指的内存,如果指向多个,将会多次释放,引起错误。 因此,unique_ptr的构造是不允许nullptr的。…

本人开学后花了三天终于在昨天3.10(也是本人的阳历生日)完成了红黑树的实现 自认为没有bug…… 不过感觉接口设计上不是很好,觉得得学习一下stl 源码在github上,点这里 上面那个是看思路自己意淫出来的,这里有个模仿STL的版本 但是没有改好。。还有几个error…… 除此之外,特别想说一个知识点,就是在模板实现上,其声明和定义是不能卸载两个文件里的,因为在编译的时候,编译器就必须知道类的大小(好吧,其实我也解释不大来…… 非要写在两个文件里的话,我只知道特化,当然,这不是很可取。…

一点废话 最近终于看完了《STL源码剖析》的前三章,个人觉得前三章是这本书最重要的部分,考虑到时间问题(简历还没投啊,拖太晚了),其他的具体实现先放放也罢。 关于STL中的空间配置器(allocator),在STL的运用角度上看,空间配置器是最不需要知道的东西。而在STL的实现上,空间配置器是最必须也是最先需要知道的东西。 乱七八糟的东西 首先我们必须知道的是,在C++中通过new一个新的对象,它的实际步骤可以分为两个部分:配置内存(allocat),调用构造函数(construct)。而当我们通过delete一个对象的时候,…