2019-07-31 07:00
⁄ 工业·编程
⁄ 共 25896字
本节主要介绍Thread类和ThreadLocal机制的使用方法以及实现原理,以及对ThreadPool线程池支持的简单了解
Thread类使用方法
在C++语言中,我们通过_beginThreadex或CreateThread来创建线程(最好使用前者,关于两者区别和线程基础知识可参见《Windows核心编程》),并且提供一个原型为void MyFunc(void pParam)入口函数来完成任务。在Poco中,将入口函数抽象为一个类Runnable,该类提供void run()接口,用户需要继承至该类来实现自...
POCO, 开源, 源码阅读全文
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...
POCO, 源码阅读全文
2019-07-30 06:50
⁄ 工业·编程
⁄ 共 14626字
Foundation中的SharedLibrary实现跨平台的dll动态加载。具体使用方法和简介可见:ShareLibrary官方文档
SharedLibrary导出函数
SharedLibrary类的简单用法
通过SharedLibrary可以实现函数导出和类导出,函数导出是最简单的,Dll提供方除了函数需要使用extern "C"声明之外,和普通C++编写的dll并无区别,在官方文档的例子中,dll使用方代码也很简单:
// LibraryLoaderTest.cpp
#include "Poco/SharedLibrary.h&q...
POCO, 开源, 源码阅读全文
2019-07-29 06:52
⁄ 工业·编程
⁄ 共 1726字
最近想读读Python源码,任何东西学习方法基本都是一样的,先从总体框架进行了解,再从自己侧重的方面逐步深入。
1. Python总体架构
左边是Python提供的大量的模块、库以及用户自定义的模块。比如在执行import os时,这个os就是Python内建的模块,当然用户还可以通过自定义模块来扩展Python系统。
右边是Python的运行时环境,包括对象/类型系统(Object/Type structures)、内存分配器(Memory Allocator)和运行时状态信息(Cu...
Python, 源码阅读全文
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。
架...
SQLite3, 源码阅读全文
2018-02-25 22:12
⁄ 工业·编程
⁄ 共 812字
evutil:用于抽象不同平台网络实现差异的通用功能。
event和event_base: libevent的核心,为各种平台特定的、基于事件的非阻塞 IO后
端提供抽象API, 让程序可以知道套接字何时已经准备好, 可以读或者写, 并且处理基
本的超时功能,检测OS信号。
bufferevent: 为libevent基于事件的核心提供使用更方便的封装。除了通知程序套接字已经准备好读写之外, 还让程序可以请求缓冲的读写操作, 可以知道何时IO已经真正发生。( buf...
libevent, 源码阅读全文
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)...
glibc, 源码阅读全文
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)
&...
glibc, 源码阅读全文
2017-06-07 11:13
⁄ 工业·编程
⁄ 共 5905字
epoll内核实现
(1)内核为epoll做准备工作
这个模块在内核初始化时(操作系统启动)注册了一个新的文件系统,叫"eventpollfs"(在eventpoll_fs_type结构里),然后挂载此文件系统。另外还创建两个内核cache(在内核编程中,如果需要频繁分配小块内存,应该创建kmem_cahe来做“内存池”),分别用于存放struct epitem和eppoll_entry。这个内核高速cache区,就是建立连续的物理内存页,就是物理上分配好你想要的size的内...
epoll, IO, 源码阅读全文
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结构),然后将用户空...
IO, poll, 源码阅读全文