05 2016 档案
摘要:说明说得很明白,就是等侍num_closures 为零的时候回调done_closure,代码也很简单,不加详述 #ifndef BASE_BARRIER_CLOSURE_H_ #define BASE_BARRIER_CLOSURE_H_ #include "base/base_export.h"
阅读全文
摘要:很简单的一个类,一个rect放置在另一个rect中如何放置。只是没有考虑边距等,估且认为是在外层作考虑吧。然后认为是外框比内框大,所以外层怕是要进行检查才行
阅读全文
摘要:界面库中值得注意的一点就是对象响应事件的时候自身被删除了,那么后续的访问自然就会出问题,所以需要在响应事件之后先添加引用,相关处理之后再查看自身是否已经被删除,如果已经被删除那么就直接退出。juce中通过BailOutChecker来进行这处检查,内部实现很简单也就是通过弱引用来进行,关于弱引用请看
阅读全文
摘要:juce中的WeakReference设计得比较巧妙,巧妙就是使用delete之后就可以通知道WeakReference,原理其实也很间单,其实就是在对象里添加了一个子对象masterReference,对象在析构的时候主动调用masterReference.clear();,这样来达到通知弱指针的
阅读全文
摘要:虽然有影像阅读,记忆术,思维方法等工具,得在复杂代码面前仍然觉得力不从心,强行理解其实费神费力,效果甚微,总结,侍作优化: (1)作好心理准备,不可能一次性理解。 (2)环境不熟悉,自然无法理解,那么,先收集足够信息,信息足够了自然理解起来简单,所谓会者不难,难者不会,那么就是说,其实都是简单的,只
阅读全文
摘要:学习中少不了记忆,对于快速学习都来说更是重要,如下面这个函数5秒之内轻松记住: hdevice controlcode buffer buffersize buffersize outbuffer outbuffersize poverlapped 3秒种记住,不过是临时记忆,那么如何快速内化呢?
阅读全文
摘要:这个类同样是基于 CallbackMessage, 主要目的是为了在主线程中进行回调,只不过在收到消息的时候进行检测,检测消息发送对象是否已经删除,如果消息发送对象已经没了。消息回调最终调用了调用者的 handleAsyncUpdate, 只是这样的话应当还是存在问题,主线程在处理,后台线程在删除,
阅读全文
摘要:非常值得借鉴的做法,基于引用计数和局部静态变量,代码比较简单不加详解。
阅读全文
摘要:juce中timer总体说还是比较好用的,使用时只需继承timer类, 重写callback然后调用start就可以了,juce的timer比较特别,自己通过线程实现,starttimer的时候会创建一个timerthread,然后在这个timerthread的构造函数中又触发了triggerAsy
阅读全文
摘要:说明上其实很明白,支持多线程,防止重复创建,同时支持如果删除以后就不在创建,利用局部静态变量进行标记。挺通用,看来下次写个c11版本的
阅读全文
摘要:这个比较有意思,# define BOOST_PP_INC_I(x) BOOST_PP_INC_ ## x 连接在一起以后,然后定义为x+1 实现了inc功能,不过最多也就到255
阅读全文
摘要:提供了对引用计数对象的管理,其实也就是操作引用计数对象,当引用计数为零的时候将对象销毁,值得学习的是juce是如果将引用计数对象和它的智能指针结合在一起的,这个后面再加分析 值得注意的是对象转移的时候,同样是增加新对象的引用计数,减去原有对象的引用计数
阅读全文
摘要:这个类提供了最基本的引用计数管理,界面库中,经常都需要消息发送,而带来的后果就是不知道消息中包含的对象是否还存在,如果不能很好管理的话就容易出现访问销毁了的对象这样的情况,所以,juce的界面无素也基于引用计数是个不错的选择
阅读全文
摘要:这个类作为所有消息的基类,主要是包装了回调函数 virtual void messageCallback() = 0;
阅读全文
摘要:先看成员_tracked_objects,从字面上讲是被跟踪的对象,再看,相关函数 bool expired() const,这个函数是检查_tracked_objects是否已经expired.只不过是使用一些设计模式上的东西,理解也比较好理解, 详细源码如下
阅读全文
摘要:挺简单的一个类,只是维护了一个成员 shared_ptr<detail::trackable_pointee> _tracked_ptr; 这样看来的话,所谓的track还是基于智能指针,这里注意,track的对象需要从trackable_pointee继承,一个空类,主要还是为了用于标识。
阅读全文
摘要:一直觉得boost的时间库不是很好用,当然,也有可能是我没有深入理解,所以,把代码弄出来看看或许要好些,时间处理中,取当前时间真的是太常见,而boost中各种clock又区分不清楚,然而,代码能说明一切,从下面代码可以看出,steadyclock和systemclock根本就代表不同的计数. Que
阅读全文
摘要:base库中比较有意思就是这个类了,如同很多界面库一样,创建了一个隐藏窗口来处理需要在界面线程处理的消息,大体原理也就是需要执行task的时候发送一个自定义的消息,当窗口接收到task的时候调用保存起来的回调函数,还有的是通过把回调放在消息结构体里面 自下义的消息 值得注意的是,别自己定义个消息和这
阅读全文
摘要:如同名称描述的那样,这个类就是个taskqueue,也就是任务队列,添加任务到队列,然后由MessageLoop去执行task,比较关心的函数如下: 将closeure封装到了 PendingTask 这个里边值得注意的是 from_here 这个其实就是个位置信息,记录了当前代码所在文件,代码所在
阅读全文
摘要:这个类说白了就是对windows event的封装,没有什么特别的,常规做法,等侍另一线程无非就是等侍事件置信waitsingleobject,通知事件无非就是setevent,一看就明白,不就详解,写在这里只是为了这个系更的完整性 下边的示例代码注意下: SendToOtherThread(e);
阅读全文
摘要:为了兼容不同的平台,这个类采用了impl模式,win平台通过CRITICAL_SECTION, 这样的话还是相对比较简单,具体就不详解了,不过不得不说boost的实现方式就要复杂到哪里去了,当然,好处就是功能强大,坏处就是学习成本高,会用的人少。
阅读全文
摘要:特别说明,由于需要快速学习,所以,我的文章中有些关于记忆的东西。 这个类相对还是比较简单,就是对线程的简单封装,相比boost的thread简直不知简单到哪里去,不过无所谓,简单能办事就可以。 重写run函数实现自己的逻辑 值得注意的就是下面这个数据成员 到是注解中就说得很明白了,必需要start调
阅读全文

浙公网安备 33010602011771号