随笔分类 - C/C++
C语言资源
摘要:0.C自带库/函数在线文档http://www.acm.uiuc.edu/webmonkeys/book/c_guide/1.so文件制作和使用http://blog.csdn.net/love3s/article/details/75154402.哈希表http://blog.csdn.net/hongqun/article/details/61032753.编写服务程序http://blog.csdn.net/gobitan/article/details/5903342http://colding.bokee.com/5277082.html4.epoll使用http://blog.cs
阅读全文
[转]Windows 内核(WRK)简介
摘要:引子WRK是微软于 2006 年针对教育和学术界开放的Windows内核的部分源码,WRK(Windows Research Kernel)也就是Windows研究内核,在WRK中不仅仅只提供了Windows内核模块的部分代码,其还提供了编译工具,也就是通过这个编译工具,你可以将你的WRK编译成一个EXE文件,也就是内核可执行模块,然后你可以利用这个EXE文件来取代操作系统本身的内核,这样的话,下次开机的时候操作系统所加载的内核就是您编译的那个EXE了。工具软件Intel x86 CPU;VMware 6.5;Windows Server 2003 SP1(用于测试 WRK 编译结果);Win
阅读全文
vs2010下libevent的使用
摘要:下载最新的libevent,目前是 libevent-2.0.20-stable.tar.gz修改“D:\libevent-2.0.10-stable\event_iocp.c”、“D:\libevent-2.0.10-stable \evthread_win32.c”、“D:\libevent-2.0.10-stable\listener.c”三个文件,在文件开头分别加上一 行: #define _WIN32_WINNT 0x0500在Makefile.nmake中的CFLAGS中加入/ZI选项,同时去掉/Ox优化选项,这样生成的lib库会带有调试信息进入VS2010命令提示切换到libev
阅读全文
【转】Asio与shared_ptr的一些注意事项
摘要:经过一段时间的Asio使用,理清楚了一些基本的概念,这里和shared_ptr指针一起总结一下1、Asio中,不管写(Write)还是读(Read)都需要等待相应的事件完成后再发起下一次写或者读。读操作比较好办,在handle_read事件中直接进行下一次async_read操作就可以,但是写的话得自己管理一个deque队例,在写入操作完成后则自动把最顶的数据包弹出,然后开始写下一个(如果在缓冲队列中还有剩余的数据包);2、Asio中,不管任何的函数调用,若有未涉及error_code和涉及error_code的相同功能函数存在,则使用涉及error_code的函数调用,并且处理错误信息,否则
阅读全文
C++遍历中删除std::hash_map元素问题
摘要:问题:在遍历中删除std::hash_map元素时,出现服务器挂的情况。改进前代码://释放指定会议的socket和客户信息 it=m_ClientSocket.begin(); for(;it!=m_ClientSocket.end();it++) { if (it->second.meetingid==loginuserinfo.meetingid) { SOCKET s=it->first; closesocket(s); cout<<"close socket is :"<<s<<endl; m_ClientSocke
阅读全文
Boost线程库学习笔记[转]
摘要:一、创建一个线程创建线程 boost::thread myThread(threadFun); 需要注意的是:参数可以是函数对象或者函数指针。并且这个函数无参数,并返回void类型。 当一个thread执行完成时,这个子线程就会消失。注意这个线程对象不会消失,它仍然是一个还处在它的生存期的C++对象。同理,当对一个堆上的线程对象的指针调用delete时候,线程对象被销毁,操作系统的线程并不能保证就消失。放弃时间片 boost::thread::yield(); 当前线程放弃余下的时间片。等待一个线程 myThread.join(); 调用这个方法的线程进入wait状态,直到myThread代表
阅读全文
基于boost 线程并行技术实现消息队列方式[记录]
摘要:#include<queue>#include<boost/asio.hpp>#include<boost/bind.hpp>#include<boost/thread.hpp>#include<boost/thread/tss.hpp>#include<boost/thread/mutex.hpp>#include<boost/thread/condition.hpp>#include<boost/date_time/posix_time/posix_time.hpp>#include<io
阅读全文
vs2010下用nmake编译libevent/sample中的例子
摘要:CFLAGS=/I../I../WIN32-Code/I../include/I../compat/DWIN32/DHAVE_CONFIG_H/DTINYTEST_LOCALCFLAGS=$(CFLAGS)/W3/wd4996/nologo/Od/MDd/ZiREGRESS_OBJS=http-server.objhello-world.objPROGRAMS=http-server.exehello-world.exeLIBS=..\libevent.lib..\libevent_core.lib..\libevent_extras.libws2_32.libshell32.libadvap
阅读全文
Window下编译Ffmpeg到ActiveX打包(转)
摘要:首先到Ffmpeg和MinGW官网下载所需的包.MingGWhttp://sourceforge.net/projects/mingw/files/Ffmpeghttp://ffmpeg.org/download.html我使用的Ffmpeg是0.6.3,用Git下或者直接下他的压缩包.MinGW安装完毕后直接打开MinGW32\MSYS\msys.bat(Win7下需要管理员权限),在MinGW控制台下cd到ffmpeg的解压文件夹根目录.接着就是配置编译选项,笔者这里只用到H264的解码器单元,所以其他音视频编码器一律关掉.笔者的编译选项:configure--disable-armv5t
阅读全文
VS2010 代码格式化工具 AStyle
摘要:在http://sourceforge.net/projects/astyle上下载最新版在VS2010中添加外部工具参数填写--style=ansi $(ItemFileName)$(ItemExt)如下图接下来就可以在VS2010中使用了,比IDE自带的格式化工具好用多了
阅读全文
log4cpp 1.0 在vs2005下的编译
摘要:下载地址http://log4cpp.sourceforge.netlog4cpp只提供了VC6的项目文件,在msvc6目录下用vs2005打开msvc6.dsw文件,打开时会有错误弹出,不用管它,转换完项目后有多个工程只有留下log4cpp和log4cppDll,并删除两个项目中的NTEventLogCategories.mc 文件引用要解决一个 mode_t 类型可能出现的重定义问题,需要打开以下文件c:\log4cpp-0.3.5rc3\include\log4cpp\config-win32.h查找 typedef int mode_t; 改为以下内容,(即加上 namespace l
阅读全文
boost::asio - 常用方法
摘要:域名解析boost::asio::io_serviceio_service;tcp::resolverresolver(io_service);tcp::resolver::queryquery(tcp::v4(),argv[1],"daytime");tcp::resolver::iteratorendpoint_iterator=resolver.resolve(query);tcp::resolver::iteratorend;tcp::socketsocket(io_service);boost::system::error_codeerror=boost::asi
阅读全文
ENet library compilation record
摘要:附加依赖项odbc32.lib odbccp32.lib enet.lib添加#include <winsock2.h>#pragma comment(lib, "Ws2_32.lib ")#pragma comment( lib, "winmm.lib" )#pragma comment(linker,"/NODEFAULTLIB:libc.lib")(以此记录)
阅读全文
ENET 1.3.3 VC2005 下使用
摘要:添加#pragma comment(lib,"ws2_32.lib")#pragma comment(lib,"winmm.lib")如果要用Sleep(大写)则添加#define WIN32_LEAN_AND_MEAN#include <windows.h>忽略特定库/NODEFAULTLIB:libcmt.lib
阅读全文
可靠的UDP编程(ENET库)
摘要:大家都知道UDP这个东西太不可靠了,存在着乱序,丢包,包重复等缺点,但它的速度快,包有界等优点,但在实际编程中要自己处理乱序啊之类的问题会发疯的。也许大家说用TCP就得了,第一点TCP的速度比较慢,第二个TCP是一个数据流一样的东西,我们要传数据的话还得处理数据的分界问题,也挺麻烦的。 针对这个问题,ENET这个库实现了一个性能介于TCP与UDP之间,完成可靠(不丢包,按序),保持数据的分界的优点。编程起来也挺方便的。下载到http://enet.bespin.org/SourceDistro.html,目前最新版本是1.2,然后按照说明编译出库出来。 使用ENET库就可以实际可靠的UDP编程
阅读全文
boost.asio服务器使用io_service作为work pool
摘要:使用io_service作为处理工作的work pool,可以看到,就是通过io_service.post投递一个Handler到io_service的队列,Handler在这个io_service.run内部得到执行,有可能你会发现,io_services.dispatch的接口也和io_service.post一样,但不同的是它是直接调用而不是经过push到队列然后在io_services.run中执行,而在这个示例当中,显然我们需要把工作交到另一个线程去完成,这样才不会影响网络接收线程池的工作以达到高效率的接收数据,这种设计与前面的netsever其实相同,这就是典型的Half Sync
阅读全文
boost高并发网络框架+线程池
摘要:boost的官方例子,有单线程的网络框架,httpserver2是线程池的。下面参照网上某人的代码修改了一点(忘了哪位大仙的代码了)测试工具,适用stressmark,测试效果非常好, 9000个/s#include<stdio.h>#include"AuthenHandle.h"#include"configure.h"#ifdefWIN32//forwindowsnt/2000/xp#include<winsock.h>#include<windows.h>#include"gelsserver.h&qu
阅读全文
用ASIO读写串行口
摘要:ASIO不仅支持网络通信,还能支持串口通信。要让两个设备使用串口通信,关键是要设置好正确的参数,这些参数是:波特率、奇偶校验 位、停止位、字符大小和流量控制。两个串口设备只有设置了相同的参数才能互相交谈。ASIO提供了boost::asio::serial_port类,它有一个set_option(const SettableSerialPortOption& option)方法就是用于设置上面列举的这些参数的,其中的option可以是:serial_port::baud_rate 波特率,构造参数为unsigned intserial_port::parity 奇偶校验,构造参数为s
阅读全文
使用读写锁
摘要:/*FileName:rwlock.cDate:20100310Desc:g++rwlock.c-lpthread-odemo使用读写锁,在读大于写情况下使用读写锁*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<pthread.h>#include<signal.h>intisRun=1;//程序运行标志structConfigInfo{pthread_rwlock_trwlock;charpath[128+
阅读全文
用互斥锁传送安全线程参数
摘要:/*FileName:mutex.cDate:20100310Desc:gccmutex.c-lpthread-odemo用互斥锁传送安全线程参数,删除加锁和解锁试试效果*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<pthread.h>pthread_mutex_tmutex;void*thread_fun(void*arg){intn=*((int*)arg);//已经变量线程内部私有变量了pthread_mutex
阅读全文
浙公网安备 33010602011771号