• Windows下线程池的实现(C++)

    windows下threadpool的实现 ( C++ ) 1. Task对于参数的变化参考了loki的typelist的做法,可支持0 - 9个参数的函数对象。 2. task.h使用脚本自动生成(taskGen.py) 3. scheduler.h用于解耦thread_pool和task_thread两个模块。 main.cpp演示了tp_lib的使用方法,其中TaskMgr用于统一管理任务对象,并粘合thread_pool

    4
    359
    7KB
    2014-05-16
    10
  • 一个完成端口模型的实现(IOCP)

    开发环境: VS2010 开发语言: C++ Winsock I/O模型: IOCP (完成端口模型) 代码示例包括Client和Server, common下包括Functor和Thread两个模块。Functor封装了函数对象,用于各种Callback;Thread封装了线程函数对象,用于将类的成员函数绑定到一个线程来执行。 server路径下IServer定义了服务端的接口,CompletionPort实现了IServer,并利用观察者模式和上层解耦。Server的实现分解为IoData, SocketContext, Disposer, Initializer, Parser, Poster, Creator几个主要的模块,并通过CompletionPort包装为统一的接口。其中对于连接的监听采用了AcceptEx函数来实现异步的Accept,该过程定义在WatchProc所对应的线程函数中。IOCPTest定义了服务端的测试接口,可以通过控制命令来实现对Server的Start, Stop, Suspend, Resume操作。 client下IClient定义了客户端的接口,SocketClient实现了IClient,通过ConnectProc以及SendPacketProc两个过程分别控制连接的建立和数据包的发送,并通过队列来管理连接到Server的socket。ClientTest定义了Client端的测试接口,可以自行定义配置信息。 Server运行的过程中会记录日志文件,方便查看服务器的运行状态。

    4
    237
    37KB
    2013-07-26
    32
  • 一个多线程文件拷贝工具的实现(使用内存映射文件)

    一个多线程的文件拷贝工具的实现,文件操作接口使用了内存映射模型的方式实现,可以指定线程数量,可以在拷贝过程中查看整体的进度信息(进度、速度、剩余时间、已用时间),同时可以查看每个子线程对应的进度信息。 应用程序使用Controller来隔离底层模型与视图。模型部分包括定时器、文件I/O以及文件传输等模块。 底层模块对于上层模块的回调通过委托的方式实现(具体参考ITransfer对于Controller的回调,Timer对于TransferImp的回调),委托机制通过函数对象IFunctor的设计来模拟。 bin目录下对应Debug和Release两种方式的可执行文件; setup目录下包含应用程序的安装文件.

    4
    540
    865KB
    2012-06-10
    30
  • 多线程文件快速拷贝工具的实现(使用内存映射文件)

    一个多线程的文件快速拷贝工具的实现,文件操作接口使用了内存映射模型的方式实现,可以指定线程数量,可以在拷贝过程中查看整体的进度信息(进度、速度、剩余时间、已用时间),同时可以查看每个子线程对应的进度信息。 应用程序使用Controller来隔离底层模型与视图。模型部分包括定时器、文件I/O以及文件传输等模块。 底层模块对于上层模块的回调通过委托的方式实现(具体参考ITransfer对于Controller的回调,Timer对于TransferImp的回调),委托机制通过函数对象IFunctor的设计来模拟。

    0
    195
    43KB
    2012-06-07
    11
  • Win32定时器的模拟

    使用Win32 API模拟了SetTimer以及KillTimer的行为,不需要将定时器绑定到窗口句柄上面,同时可以为定时器回调函数传递参数信息。

    5
    144
    6KB
    2012-05-15
    9
  • 会发光的二叉树(DLL 2.0 版,含全部源码)

    历史版本参考(黑盒复用方式):http://download.csdn.net/detail/yao050421103/4283615 此版本更新了TreeAdapter对DLL接口的管理方式,采用了统一的函数对象映射表存放DLL的函数地址,并将DLL中的函数签名信息隔离到单独的模块,以便维护和更新。 生成二叉树节点信息的核心算法来源于:http://topic.csdn.net/u/20120411/12/792b7b0c-fb57-4e5c-9cab-0a1595679d40.html

    0
    96
    131KB
    2012-05-08
    10
  • 会发光的二叉树(DLL版本,含全部源码)

    历史版本参考(白盒复用方式):http://download.csdn.net/detail/yao050421103/4283590 此版本将二叉树模型部分制作成了DLL,可利用Win32 DLL的相关接口进行黑盒复用。文件中包含DLL部分的源码以及Demo部分的源码。 Demo部分的结构使用了适配器来统一接口,并利用Controller降低了模型和视图的耦合。 Demo程序引入了背景色、自动闪烁、自动更新等特性,并包含了GDI和GDI+两套绘图接口。 生成二叉树节点信息的核心算法来源于:http://topic.csdn.net/u/20120411/12/792b7b0c-fb57-4e5c-9cab-0a1595679d40.html

    4
    79
    131KB
    2012-05-07
    10
  • 会发光的二叉树(背景+自动闪烁+自动刷新)

    开发工具是VC 6.0。生成二叉树节点信息的核心算法来源于:http://topic.csdn.net/u/20120411/12/792b7b0c-fb57-4e5c-9cab-0a1595679d40.html 在此程序基础上增加了背景色、自动闪烁、自动更新等特性,绘图接口包括GDI以及GDI+,其中GDI+黑色背景的自动闪烁效果较GDI更佳。 应用程序采用和原作完全不同的结构设计方式,利用Controller分离了模型和视图(MVC),并通过接口ITree、IPaint、ITreeModel降低模块间的耦合度,提高了二叉树模型部分的可复用性(白盒复用)。 注意:程序正常编译需要Gdiplus的支持。

    4
    95
    78KB
    2012-05-07
    10
  • VC 可拉伸的对话框(动态改变子控件大小)

    使用Visual C++ 6.0做的可拉伸的对话框,子控件的尺寸和字体大小可随对话框的改变而改变。 程序使用配置文件定义子控件的逻辑布局,字体信息以及对话框的信息。

    4
    384
    28KB
    2011-05-17
    50
  • VC模拟C#反射中的动态创建功能

    使用C++模拟C#中的“反射”的动态创建功能,实现对象的动态加载.在自定义类中使用DECLARE_REFLECTION声明反射;使用IMPLEMENT_REFLECTION实现反射。 程序运行过程可以使用Assembly::CreateInstance动态创建对象(可以取代工厂模式),使用Assembly::First以及Assembly::Next实现对类集合的遍历。 程序在Visual C++ 6.0下测试通过。

    5
    90
    19KB
    2011-04-06
    7
  • 分享王者

    成功上传51个资源即可获取
关注 私信
上传资源赚积分or赚钱