摘要:
Chromium的Timer机制实现是依据其Base库的Thread实现的 sequence_manager 持有 task queue task queue创建task runner TimerBase 纯虚类,抽象类型。 存放了task runner,应该是真正的用于跑定时任务的循环就存在这个类 阅读全文
摘要:
OnceCallback OnceClosure RepeatingCallback RepeatingClosure Closure是给消息循环使用的内部任务,特点是返回值和参数都是void,不需要额外的运行环境,是一个完整的可以直接运行的闭包任务。 Callback是绑定闭包,用于绑定函数,自由 阅读全文
摘要:
Thread 线程通用接口,跨平台封装,会创建并持有RunLoop对象 // base/threading/thread.h raw_ptr<RunLoop> run_loop_ = nullptr; // 这种写法可以抽离真正的消息循环逻辑到RunLoop中,并且保证这部分逻辑会随着线程主函数结束 阅读全文
摘要:
2024/11/20 update mojo本质是Uinx Domain Socket(posix),在本机的进程间进行通信时不会经过网卡,可以少一次拷贝。在Windows上则是管道来实现的IPC。 mojom的用途 主要用于进程间通信,减少模块间依赖。 用接口描述语言书写mojom接口文件,经过编 阅读全文
摘要:
问题的来源,绑定和unique_ptr std::bind绑定unique_ptr的时候生成的类型并非std::function,而是一个不可拷贝的类型,这跟unique_ptr的特性有关,这意味着如果需要暂时保存绑定的函数,没有能够接受对象的类型声明 如果不需要保存可以使用auto来接受绑定的对象 阅读全文
摘要:
本文翻译自 "https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage" 介绍 cef是个基于chromium的开源项目。跟chromium项目不同,cef主要聚焦于 google chrome应用开发,cef集中于促进嵌入式浏览器在第 阅读全文
摘要:
在cefsimple中,提到了一个cefapp的类型,这个类型是一个接口类,主要目的是提供获取三种handler的接口 GetBrowserProcessHandler 分别可以得到对应回调handler,如果继承了这三种handler就能在这些时机处理自己的回调业务,举个例子,例如 ,可以实现br 阅读全文
摘要:
下面是cefsimple的入口代码,主要分成两个部分 进程判断 首先是初始化进程的代码,cef的进程结构和chromium类似,都是多进程共用代码。所以cef提供了一些函数来检测主进程(即browser进程)的流程和子进程的流程,以分别执行适合当前执行进程的逻辑。这段代码如下所示。 其中main_a 阅读全文
摘要:
搜了搜cef相关的文章,内容大多是 如何下载源码,如何编译,还有一些源码剖析,但是很少有人说明对cef进行开发时如何保存修改,使用git进行修改后的版本控制。 cef是怎么做的? cef源码分为两个部分,一个部分是cef的代码,另一个部分是chromium源码,如果按照cef官网给的指引下载代码,一 阅读全文
摘要:
代码模块与职责 所有的代码都在src目录下,这会导致一上手的时候无法快速划分模块,不便于理解,如果分类然后放文件夹就会好一些。 最关键的部分在于uCEFApplication,是和dll链接的部分 ,可以在这个文件内找到所有关于接口类型的声明,抽象了基本类型使用的接口,结构清晰。几乎是个功能都能找到 阅读全文