
c/c++
oceanperfect
这个作者很懒,什么都没留下…
展开
-
C++采用内存映射方式高效率读写大数据
在有时候,项目的数据量特别大,而且源源不断的到来,这个时候,利用传统的IO文件流写文件势必效率很低跟不上节奏。不妨采用内存映射方式来写文件,达到高效。我们这里采用mmap这种内存映射方法:一、mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这原创 2016-08-12 16:09:22 · 20380 阅读 · 1 评论 -
基于boost库的线程安全queue
STL的queue多线程下是不安全的,当然网上有很多无锁队列,如boost::lockfree::queue就是很好的东西。这里实现一个互斥锁的线程安全队列,基于STL的QUEUE。/************************************************************************************************ File Nam原创 2017-06-08 11:34:26 · 3729 阅读 · 1 评论 -
基于C++ STL利用CAS原子操作封装的无锁list
在做高吞吐量的项目中,性能是必须考虑的一个重要因素。而数据同步则又是重中之重,常常需要使用到锁,但是锁的使用会造成性能下降。这个时候,CAS就大显身手了,关于CAS,这里就不再多说。直接贴我基于STL list的封装的无锁list,其他容器则类似。文件1:lockfree_list.hpp#ifndef LOCK_FREE_LIST_HPP#define LOCK_FREE_LIST原创 2017-07-11 09:51:36 · 4478 阅读 · 0 评论 -
封装dpdk接口成静(动)态库(同源同宿、多通道队列收包),然后在C++应用中使用方法
dpdk的接口全部都是C语言实现的,它的makefile模版也很简单,只需改变其宏就可以在生成可执行文件、静态库、动态库之间切换。本篇博文主要给出如果使用dpdk封装成静态库后,在C++应用程序中编译使用的方法。一、封装dpdk抓包接口源代码实现的功能:1、可通过配置文件进行配置多个队列收取数据包,并且保证数据包的同源同宿(或者负载均衡,二者取其一,具体方法须修改网卡驱动程序);原创 2017-07-17 14:27:26 · 4763 阅读 · 4 评论