- 博客(9)
- 资源 (10)
- 收藏
- 关注
原创 c++11 完全公平队列实现
有时我们的服务会从多个其他子服务接收请求,不同类型的请求频率相差比较大,如果采用一个集中的队列,对到来的各个请求排队分发处理,则会出现繁忙的请求占据了队列的大部分,比较闲的请求到达后排在队尾,很长时间才会得到处理机会,出现不必要的延迟加大。这种情况下如果要加强各类型请求的响应及时性,可以采用优先队列,按照请求类型的频率加预计排队时间指定优先级,也可以使用公平队列,公平地处理各个类型的消息。
2016-12-28 11:10:12 1322
原创 c++11 atomic_flag实现高效的mutex
c++11线程库提供了std::mutex,方便地实现跨平台的互斥锁,提供了std::atomic模板实现原子操作。但标准中没有强制要求std::atomic模板的各种实例化保证提供的操作接口是真正的无锁实现,标准中要求保证是无锁实现的只有std::atomic_flag类,此类没有 lock unlock try_lock接口,只有test_and_set和clear。利用std::atomic
2016-12-18 16:16:04 3376 1
原创 c++11 线程安全的队列实现
用c++11的mutex和condition_variable配合STL的queue可以很方便地实现线程安全的队列,queue用来存取元素,存取元素时用mutex进行全局加锁,存取完成再进行解锁。#include #include #include #include templateclass threadsafe_queue{public: threadsafe_que
2016-12-13 11:53:26 15144 1
原创 c++11实现写优先的读写锁
先直接贴出代码:可以看出用c++11实现读写锁变得非常简洁,在读取量非常大且写入频率很低的时候,通过一个简单的写入线程计数可以避免大量的 cond_w.notify_one();减少读取线程因此发生的切换。
2016-10-12 10:36:48 13546 7
原创 std::async 实现链式调用
c#和java中都有直接提供方法实现异步执行一个任务,并在其执行完成后执行指定的任务。然而c++11却没有直接提供类似的实现。虽然用c++98的泛型和直接使用系统线程也能实现,不过要实现好还是很复杂。现在有了c++11,就可以用其中的 std::async 和 lambda方便地实现了。 在前面的任务执行完成后,可能会返回一个值,也可能不会返回值,后续的任务虽然大部分情况都需要使用到返回
2016-07-24 22:26:45 1211 1
原创 C++11 lambda使用注意
c++11开始支持了lambda,在很多地方提供了很大地便利,尤其是在STL中。但在真正弄清楚之前,不要滥用。lambda虽然方便,好用,但也有一些需要注意的地方,使用不当会造成一些奇奇怪怪的错误。其实C++11都是这样,提供了更方便的库,但是都有一些坑,不去了解就大量使用很容易掉坑。 1.lambda的捕捉方式 2.在lambda内部维护一些状态
2016-07-17 22:58:50 4021
原创 c++11 std::async使用注意
std::async,c++11中提供的异步任务高级抽象,包含在 头文件中,能让你方便的实现异步地执行一个任务并在需要地时候获取其结果。和直接使用std::thread 相比,有着一些优势: 1.std::async 返回的future对象,可以方便地等待callable对象执行完成并获取其返回值 2.能从实现库的一些高级功能中获益,比如线程池等,并大大减少异常的产生。当然其使
2016-07-17 21:34:21 14130 6
原创 windows完成端口学习总结(一)
近来仔细学习了windows的5种网络I/O模型,阻塞、选择、异步选择、事件选择都还比较好理解,编写程序也不是很难,但是完成端口模型就比较麻烦了,需要考虑很多的线程间同步问题,诸多异常情况的处理,主动和被动关闭客户端连接问题。经过接近一个来月的思考和实践,终于有了初步的实现方案,其中遇到了许多问题,走了许多的错路,吸取了许多的教训。现总结一下思路,方便以后继续完善和改进。关于一些基本的问题就不
2014-03-22 23:07:20 1424
原创 后缀树的生成——如何做到简单快速(含源码)
最近两个月一直在看JULY的“结构之法 算法之道”,链接:http://blog.csdn.net/v_JULY_v,收获颇多,在此感谢!其中一篇讲到后缀树的,http://blog.csdn.net/v_july_v/article/details/6897097,讲解了后缀树的结构特征、生成方法和一些用处,看了很久,但还是觉得其中的生成方式比较复杂,要具体实现的话,编码难度有点大,很多编程
2013-11-13 21:49:44 2440
设计模式Lexi C++版
2015-05-23
IOCP服务器收发、处理数据包的简单框架
2014-02-23
c++写的类c的解释器
2013-11-27
后缀树生成方式源码
2013-11-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人