- 博客(15)
- 收藏
- 关注
原创 EPOLL源码
在创建 epitem 并初始化之后,ep_insert 中第二件事情就是设置 socket 对象上的等待任务队列。并把函数 fs/eventpoll.c 文件下的 ep_poll_callback 设置为数据就绪时候的回调函数。在 ep_ptable_queue_proc 函数中,新建了一个等待队列项,并注册其回调函数为 ep_poll_callback 函数。然后再将这个等待项添加到 socket 的等待队列中。当有的连接就绪的时候,内核会把就绪的连接放到 rdllist 链表里。wq: 等待队列链表。
2022-10-27 16:18:15
1461
原创 C++回调
回调是一个调用函数的过程,涉及两个角色:计算和数据。调用者 先存储 回调函数,在未来的某个 调用时刻,取出并调用 回调函数。捕获了上下文的回调函数就成为了闭包,即 闭包 = 函数 + 上下文。未绑定 (unbound) 的数据,即执行回调时需要额外传入的数据。qsort中所有compare执行完毕,调用结束,被称为同步回调。对于 同步回调,上下文的 生命周期往往比闭包长,一般不失效。调用者 立即调用 回调函数(调用时刻 在函数返回前)绑定 (bound) 的数据,即回调的 上下文。
2022-10-27 16:15:50
479
原创 STL系列_istream_iterator和ostream_iterator
std::istream_iterator 是单趟输入迭代器,从为之创建迭代器的 std::basic_istream 对象读取 T 类型的相继对象,通过调用适当的 operator>>。用 operator
2022-10-12 10:46:05
429
原创 STL系列5-stack和queue的设计
基于deque实现,并且queue不提供Iterator遍历queue还可以选择list作为底层结构同样基于deque设计,并且不提供iterator遍历stack可以选择list和vector作为底层实现
2022-06-27 17:10:13
115
原创 STL系列4-deque分析
deque:分段连续map:由一段vector构成,vector中每个元素为一个指向buffer的指针deque的iterator设计:四个元素:cur、first、last、nodedeque的初始化deque中buffer的大小deque::insert()deque::insert()deque::insert()deque模拟连续空间由deque_iterator实现,iterator重载各种运算符......
2022-06-27 16:46:30
119
原创 STL系列1-Iterator的设计
Iterator是算法与容器的桥梁以上例子说明Iterator需要给算法说明上述提到的三种属性:iterator_category、difference_type、value_typeIterator本身必须定义5种相关类型,上述为其中三种。Iterator Traits的设计由于Pointer本身无法回答5种相关类型,因此设计Iterator Traits用于分离Class Iterator和None-class.......
2022-06-21 14:28:22
78
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人