mymodian的专栏

因为兴趣,一点一滴,坚持

排序:
默认
按更新时间
按访问量

c++11 完全公平队列实现

有时我们的服务会从多个其他子服务接收请求,不同类型的请求频率相差比较大,如果采用一个集中的队列,对到来的各个请求排队分发处理,则会出现繁忙的请求占据了队列的大部分,比较闲的请求到达后排在队尾,很长时间才会得到处理机会,出现不必要的延迟加大。这种情况下如果要加强各类型请求的响应及时性,可以采用优先队...

2016-12-28 11:10:12

阅读数:720

评论数:0

c++11 atomic_flag实现高效的mutex

c++11线程库提供了std::mutex,方便地实现跨平台的互斥锁,提供了std::atomic模板实现原子操作。但标准中没有强制要求std::atomic模板的各种实例化保证提供的操作接口是真正的无锁实现,标准中要求保证是无锁实现的只有std::atomic_flag类,此类没有 lock u...

2016-12-18 16:16:04

阅读数:1496

评论数:1

c++11 线程安全的队列实现

用c++11的mutex和condition_variable配合STL的queue可以很方便地实现线程安全的队列,queue用来存取元素,存取元素时用mutex进行全局加锁,存取完成再进行解锁。 #include #include #include #include templa...

2016-12-13 11:53:26

阅读数:5472

评论数:1

c++11实现写优先的读写锁

先直接贴出代码: 可以看出用c++11实现读写锁变得非常简洁,在读取量非常大且写入频率很低的时候,通过一个简单的写入线程计数可以避免大量的 cond_w.notify_one();减少读取线程因此发生的切换。

2016-10-12 10:36:48

阅读数:5186

评论数:2

std::async 实现链式调用

c#和java中都有直接提供方法实现异步执行一个任务,并在其执行完成后执行指定的任务。然而c++11却没有直接提供类似的实现。虽然用c++98的泛型和直接使用系统线程也能实现,不过要实现好还是很复杂。现在有了c++11,就可以用其中的 std::async 和 lambda方便地实现了。     ...

2016-07-24 22:26:45

阅读数:428

评论数:0

C++11 lambda使用注意

c++11开始支持了lambda,在很多地方提供了很大地便利,尤其是在STL中。但在真正弄清楚之前,不要滥用。lambda虽然方便,好用,但也有一些需要注意的地方,使用不当会造成一些奇奇怪怪的错误。其实C++11都是这样,提供了更方便的库,但是都有一些坑,不去了解就大量使用很容易掉坑。     1...

2016-07-17 22:58:50

阅读数:2221

评论数:0

c++11 std::async使用注意

std::async,c++11中提供的异步任务高级抽象,包含在 头文件中,能让你方便的实现异步地执行一个任务 并在需要地时候获取其结果。和直接使用std::thread 相比,有着一些优势:   1.std::async 返回的future对象,可以方便地等待callable对象执行完成并获取其...

2016-07-17 21:34:21

阅读数:6682

评论数:5

windows完成端口学习总结(一)

近来仔细学习了windows的5种网络I/O模型,阻塞、选择、异步选择、事件选择都还比较好理解,编写程序也不是很难,但是完成端口模型就比较麻烦了,需要考虑很多的线程间同步问题,诸多异常情况的处理,主动和被动关闭客户端连接问题。经过接近一个来月的思考和实践,终于有了初步的实现方案,其中遇到了许多问题...

2014-03-22 23:07:20

阅读数:1057

评论数:0

后缀树的生成——如何做到简单快速(含源码)

最近两个月一直在看JULY的“结构之法 算法之道”,链接:http://blog.csdn.net/v_JULY_v,收获颇多,在此感谢!其中一篇讲到后缀树的,http://blog.csdn.net/v_july_v/article/details/6897097,讲解了后缀树的结构特征、生成方...

2013-11-13 21:49:44

阅读数:1474

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭