c++
zhiweiyang
这个作者很懒,什么都没留下…
展开
-
mutable
深入理解C++中的mutable关键字 mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会转载 2014-07-29 13:35:30 · 396 阅读 · 0 评论 -
live555-消息循环
消息循环看服端的主体:live555MediaServer.cpp中的main()函数,可见其创建一个RTSPServer类实例后,即进入一个函数env->taskScheduler().doEventLoop()中,看名字很明显是一个消息循坏,执行到里面后不停地转圈,生名不息,转圈不止。那么在这个人生的圈圈中如何实现RTSP服务和RTP传输呢?别想那么远了,还是先看这个圈圈中实现了什么功能吧转载 2014-09-24 22:23:48 · 495 阅读 · 0 评论 -
live555-计划任务(TaskScheduler)深入探讨
计划任务(TaskScheduler)深入探讨我们且把三种任务命名为:socket handler,event handler,delay task。这三种任务的特点是,前两个加入执行队列后会一直存在,而delay task在执行完一次后会立即弃掉。socket handler保存在队列BasicTaskScheduler0::HandlerSet* fHandlers中;ev转载 2014-09-24 22:38:00 · 785 阅读 · 0 评论 -
C++编译器符号表有哪些内容?
很早就想写一篇关于符号表的学习小结,可是迟迟不能下笔。其一是因为符号表在编译器的设计中占有举足轻重的地位【我们在学习编译原理的时候更多的是注重principles,而没有关心一个编译器的实现,所以符号表讲解的也比较少】,编译阶段的每“遍”都会和符号表打交道,本人只做过一个Mini C的编译器的前端部分,感觉功底不够;其二是因为我想在原来C语言的基础上,增加C++语言符号表的一些知识,对于C++的符转载 2014-08-20 16:22:26 · 736 阅读 · 0 评论 -
static作用
C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令; 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。 4)栈——增长方向:自顶向下增长;自动变量以转载 2014-08-20 16:19:03 · 256 阅读 · 0 评论 -
POCO C++库学习和分析 -- Foundation库结构
POCO C++库学习和分析 -- Foundation库结构Foundation库是POCO库集中的一个,提供了编程时的一些常用抽象。在程序中被分成了18个部分,分别是:1)Core这部分除了建立跨平台库的基础头文件外,最有意义的部分是分装了原子计数的基本类(AtomicCounter),以及垃圾收集的一些类,如AutoPtr,SharedPtr。2转载 2014-08-05 19:36:09 · 1206 阅读 · 0 评论 -
POCO C++库学习和分析 -- Foundation库SharedLibrary模块分析
POCO C++库学习和分析 -- Foundation库SharedLibrary模块分析 对于一个不熟悉的开源库和模块,我觉的最好的学习方法莫过于: 1. 使用库,看库实现了什么功能和接口; 2. 抛开库,想一想,自己如何实现。可以想出的出来是最好的,想不出其实也没什么关系,至少有了疑问。转载 2014-07-31 13:09:04 · 1602 阅读 · 0 评论 -
POCO C++库学习和分析 -- 线程 (三)
POCO C++库学习和分析 -- 线程 (三)4. 定时器定时器作为线程的扩展,也是编程时经常会被用到的元素。在程序设计上,定时器的作用是很简单。预定某个定时器,即希望在未来的某个时刻,程序能够得到时间到达的触发信号。编程时,一般对定时器使用有下面一些关注点:1. 定时器的精度。Poco中的定时器精度并不是很高,具体精度依赖于实现的平台(Windows or Linu转载 2014-08-06 12:56:26 · 867 阅读 · 0 评论 -
POCO C++库学习和分析 -- 线程 (二)
POCO C++库学习和分析 -- 线程 (二)3. 线程池3.1线程池的基本概念 首先我们来明确线程池的一些概念。 什么是线程池?线程池的好处? 池的英文名:POOL,可以被理解成一个容器。线程池就是放置线程对象的容器。我们知道线程的频繁创建、销毁,是需要耗费一点的系统资源的,如果能够预先创建一系列空线程转载 2014-08-06 12:46:01 · 758 阅读 · 0 评论 -
POCO C++库学习和分析 -- 线程 (一)
POCO C++库学习和分析 -- 线程 (一) 线程是程序设计中用的非常多的技术,在UI设计,网络通讯设计中广泛使用。在POCO库中,线程模块可以分成6个部分去理解。锁(Lock),线程(Thread),主动对象(ActiveObject),线程池(ThreadPool), 定时器(Timer)。下面对它们分别介绍。 1. 数据保护-锁转载 2014-08-06 12:39:15 · 2095 阅读 · 0 评论 -
POCO C++库学习和分析 -- 跨平台库的生成
POCO C++库学习和分析 -- 跨平台库的生成 这一节主要讲一下,如何在window上生成一个类似于POCO动态库,以及POCO跨平台头文件的结构。 POCO C++ Basic Edition版本,工程由四部分联合而成,分别是Foundation,Net,Util,Xml。 其中每个部分都是跨平台结构,VC下编译采转载 2014-08-05 19:03:45 · 1481 阅读 · 0 评论 -
POCO C++库学习和分析 -- 内存管理 (二)
POCO C++库学习和分析 -- 内存管理 (二)3. SharedPtr SharedPtr是Poco库中基于引用计数实现的另外一种智能指针。同AutoPtr相比,Poco::SharedPtr主要用于为没有实现引用计数功能的类(换句话说,也就是该类本身不是引用计数对象)提供引用计数服务,实现动态地址的自动回收。 可以这么说,Poco转载 2014-07-29 16:13:45 · 537 阅读 · 0 评论 -
POCO C++库学习和分析 -- 内存管理 (三)
POCO C++库学习和分析 -- 内存管理 (三) 看完Poco库中的智能指针,基本上Poco中的内存管理已经快结束了。其他的部分都是些边边角角的东西,非常的简单。下面一一介绍。4. AutoReleasePool AutoReleasePool类的出现也同样是为了解决用户动态分配对象的释放问题,但同智能指针AutoPtr和SharedPt转载 2014-07-29 16:38:26 · 656 阅读 · 0 评论 -
POCO C++库学习和分析 -- 内存管理 (一)
POCO C++库学习和分析 -- 内存管理 (一) 对于内存的管理,Poco C++库中主要包含了引用计数,智能指针,内存池等几个部分。下面将分别对这几个部分进行介绍。首先回顾一下,对于内存的管理,出现过的几种技术。C时代的内存池,主要解决内存碎片,和内存的频繁获取和释放的开销问题。到了C++时代,内存池仍然存在,但是出现了面对对象分配的内存池,解决问题还是一样。C++中智转载 2014-07-29 15:47:34 · 945 阅读 · 0 评论 -
live555-基础类
基础类讲几个重要的基础类:BasicUsageEnvironment和UsageEnvironment中的类都是用于整个系统的基础功能类.比如UsageEnvironment代表了整个系统运行的环境,它提供了错误记录和错误报告的功能,无论哪一个类要输出错误,就需要保存UsageEnvironment的指针.而TaskScheduler则提供了任务调度功能.整个程序的运行发动机就是它,它调度转载 2014-09-24 22:22:17 · 361 阅读 · 0 评论