现在位置: 首页 > 源码
本节主要介绍Thread类和ThreadLocal机制的使用方法以及实现原理,以及对ThreadPool线程池支持的简单了解 Thread类使用方法 在C++语言中,我们通过_beginThreadex或CreateThread来创建线程(最好使用前者,关于两者区别和线程基础知识可参见《Windows核心编程》),并且提供一个原型为void MyFunc(void pParam)入口函数来完成任务。在Poco中,将入口函数抽象为一个类Runnable,该类提供void run()接口,用户需要继承至该类来实现自...
阅读全文
2019-07-30 16:10 工业·编程 ⁄ 共 17764字 暂无评论
POCO C++是一个开源的C++类库的集合,它主要提供简单的、快速的网络和可移植应用程序的C++开发,这个类库和C++标准库可以很好的集成并填补C++标准库的功能空缺。POCO库的模块化、高效的设计及实现使得POCO特别适合嵌入式开发 模块说明 POCO由4个核心库及若干个附加库组成。核心库是:Foundation、XML、Util和Net。其中的两个附加库是:NetSSL,为Net 库中的网络类提供SSL 支持;Data,用来以统一的形式访问不同的SQL 数据库。PO...
阅读全文
Foundation中的SharedLibrary实现跨平台的dll动态加载。具体使用方法和简介可见:ShareLibrary官方文档 SharedLibrary导出函数 SharedLibrary类的简单用法 通过SharedLibrary可以实现函数导出和类导出,函数导出是最简单的,Dll提供方除了函数需要使用extern "C"声明之外,和普通C++编写的dll并无区别,在官方文档的例子中,dll使用方代码也很简单: // LibraryLoaderTest.cpp #include "Poco/SharedLibrary.h&q...
阅读全文
2019-07-29 06:52 工业·编程 ⁄ 共 1726字 暂无评论
最近想读读Python源码,任何东西学习方法基本都是一样的,先从总体框架进行了解,再从自己侧重的方面逐步深入。 1. Python总体架构 左边是Python提供的大量的模块、库以及用户自定义的模块。比如在执行import os时,这个os就是Python内建的模块,当然用户还可以通过自定义模块来扩展Python系统。 右边是Python的运行时环境,包括对象/类型系统(Object/Type structures)、内存分配器(Memory Allocator)和运行时状态信息(Cu...
阅读全文
2019-06-10 15:25 工业·编程 ⁄ 共 6032字 暂无评论
1.通过官方的SQLite架构文档,理清大体的系统层次:Architecture of SQLite 2.阅读SQLite Documentation中Technical/Design Documentation章节(根据所在层次阅读代码,对应章节描述进行理解。) 应用层角度,从API(List Of SQLite Functions)角度切入,掌握API文档中所有参数的使用。 3.下载源码包sqlite-src-*.zip,在其src目录下包含了所有源码文件。注意若要编译SQLite库则下载单一文件版本sqlite-amalgamation-*.zip。 架...
阅读全文
2018-02-25 22:12 工业·编程 ⁄ 共 812字 暂无评论
evutil:用于抽象不同平台网络实现差异的通用功能。 event和event_base: libevent的核心,为各种平台特定的、基于事件的非阻塞 IO后 端提供抽象API, 让程序可以知道套接字何时已经准备好, 可以读或者写, 并且处理基 本的超时功能,检测OS信号。 bufferevent: 为libevent基于事件的核心提供使用更方便的封装。除了通知程序套接字已经准备好读写之外, 还让程序可以请求缓冲的读写操作, 可以知道何时IO已经真正发生。( buf...
阅读全文
2017-11-13 22:51 工业·编程 ⁄ 共 12554字 暂无评论
Public_fREe() void public_fREe(Void_t* mem) {       mstate ar_ptr;   mchunkptr p;                              /* chunk corresponding to mem */     void (*hook) (__malloc_ptr_t, __const __malloc_ptr_t)...
阅读全文
2017-11-06 22:46 工业·编程 ⁄ 共 27601字 暂无评论
malloc()函数在源代码中使用宏定义为public_mALLOc()。public_mALLOc()函数只是简单的封装_int_malloc()函数,_int_malloc()函数才是内存分配的核心实现。 public_mALLOc() Void_t* public_mALLOc(size_t bytes) {       mstate ar_ptr;       Void_t *victim;     __malloc_ptr_t (*hook) (size_t, __const __malloc_ptr_t)     &...
阅读全文
2017-06-07 11:13 工业·编程 ⁄ 共 5905字 暂无评论
epoll内核实现 (1)内核为epoll做准备工作 这个模块在内核初始化时(操作系统启动)注册了一个新的文件系统,叫"eventpollfs"(在eventpoll_fs_type结构里),然后挂载此文件系统。另外还创建两个内核cache(在内核编程中,如果需要频繁分配小块内存,应该创建kmem_cahe来做“内存池”),分别用于存放struct epitem和eppoll_entry。这个内核高速cache区,就是建立连续的物理内存页,就是物理上分配好你想要的size的内...
阅读全文
2017-05-31 11:11 工业·编程 ⁄ 共 1259字 暂无评论
应用层调用poll时,内核调用了sys_poll 在sys_poll中首先初始化,判断了nfds是超过struct file支持的最大的fd数(默认256),将传入的timeout时间转化为cpu时钟周期,并且调用了poll_initwait初始化了一个函数指针,用于操作系统异步回调的; 接下来,进行了一个while循环,从0到nfds给每一个struct pollfd对象开辟内存,是以链表节点poll_list大小开辟的(一个链表节点是一个page,链表节点中有struct pollfd结构),然后将用户空...
阅读全文