Chromium中多线程及并发技术要点(C/C++)

Chromium中提供的线程机制,以及并发处理的工具类。...
阅读(2293) 评论(0)

Chromium中跨进程文件句柄传递

在POXIS下,允许不同进程间传递文件描述符(File Descriptor))的, 比如传递socket,或者普通文件,进而可以达到不需要重新打开文件,而对相同文件读写的效果(并不是分享文件句柄)。Chromium对这个特性做了封装。...
阅读(2160) 评论(0)

[OOD-More C++ Idioms] 写时拷贝 (Copy on Write)

本惯用法的目的是达到延迟拷贝(lazy copy)的优化目的。和延迟初始化(lazy initialization)相似, 选择在恰当的时机更加有效。...
阅读(1778) 评论(3)

软件研发管理:置身其中看问题

从局外人的角度的确可以清晰的发现问题,但很难得到一个合适的解决方法。** 只有将自己融进公司,融进团队,才能更清楚了解问题的本质,才能有好的应对方案。...
阅读(1755) 评论(0)

[OOD-More C++ Idioms] 内部类 (Inner Class)

不用通过多重继承就可以实现多套接口,同时可以自然地向上转换(Up-casting)。 在单个抽象下提供相同接口的多个实现。...
阅读(1690) 评论(0)

类是如何定义出来的

Object Oriented是多种软件设计方法中的一种,其核心目标是为了降低系统的复杂性,以及代码复用。在OO里,一个类(Class)代表了一组具有共同结构和行为的一组对象(Objects),是OO语言的基础。而类又是又如定义出来的呢?...
阅读(1714) 评论(0)

[OOD-More C++ Idioms] 律师与委托人 (Attorney-Client)

律师与委托人 (Attorney-Client)目的控制访问类实现细节的粒度。C++中的friend会开始类内部的所有细节,也因此破坏了封装性。C++没有提供可以选择性使用某一部分私有成员的方式,要么全部开放,要么全部拒绝。 如果能选择确定需要使用到的一组成员,而不是全部,就可以降低耦合性。而这个律师与委托人的惯用法就可以精准的控制友元所能使用的成员。...
阅读(2258) 评论(0)

Google C++ Style Guide的哲学

Google C++ Style Guide并不是一个百科全书,也不是一个C++使用指南,但它描述适用于Google及其开源项目的编码指南,并不追求全面和绝对正确,也有许多人置疑它的一些规则。但作为一个最具影响力的编码规范,它里面有许多内容值得我们研究学习。以下主要摘自GSG负责人Titus Winters在CppCon 2014上的演讲。...
阅读(2085) 评论(1)

[OOD]违反里氏替换原则的解决方案

关于OOD的几个设计原则,大家耳熟能祥了,不再展开,可以参考设计模式的六大设计原则之里氏替换原则。这里尝试讨论常常违反的形式和解决方案。违反里氏替换原则的根源是对子类及父类关系不明确。我们在设计继承关系常常受一些主观认识的左右,比如Robert C. Martin提到的线段与线的关系,以及被大家说到烂的正方形与矩形。从以前的经验我们认为它们符合继承关系,比如线段是线的较短形式,正方形是矩形的一个特例...
阅读(2510) 评论(4)

为什么浏览器采用多进程模型

为什么浏览器采用多进程模型这个问题的答案似乎是非常清楚的,可以概括为:为了安全、稳定、性能,只是要牺牲点内存作为代价。对于安全和稳定,利用系统的进程机制就可以完成。但是多进程下的进程间通讯(IPC)很慢,而分为多进程后,一些协作任务就要分开到两个进程,如何能保持良好的性能,更不说比单进程模型更高的性能了? 所以这里再次探讨浏览器选择多进程架构的原因,以及对应架构中的要点。...
阅读(2574) 评论(0)

名不符实的读写锁

有一种单一写线程,多个读线程并发的场景,比如测量数据的读取与更新,消费者会比较多,生产者只有一个。以下图为例: 左侧是一种经典的解法,对数据整个操作加锁。为了一个写数据线程,于将所有读线程也进行加锁显然有点浪费了。于是提出读写锁(Reader/Writer Lock), 即使是使用了读写锁,其本质也是一样的,而且在POSIX下的pthread它的内部实现是基于mutex,所以它的开销更大。如果...
阅读(1577) 评论(0)

线程安全的观察者模式的设计

观察者模式的应用,主要的行为就是注册和移除观察者(observer),以及通知所有已注册的Observers。这里介绍的是Chromium项目中实现的线程安全的观察者管理及通知的基础类ObserverListThreadSafe。...
阅读(2412) 评论(0)

Google C++ Coding Style:右值引用(Rvalue Reference)

Google C++ Coding Style: Rvalue Reference 右值引用是一个C++11特性,标记为T&&。GSG中定义:只为移动建构函数(Move constructor)和移动赋值操作(Move assignment)使用右值引用。并且不要使用std::Forward(提供的完美转发特性)。...
阅读(1324) 评论(0)

Google C++ Coding Style:引用参数

Google C++ Coding Style定义输入参数以值或者const引用形式传入,输出参数使用指针。 所有以引用形式输入参数必须加上const,即const T&的形式。即如下形式:void Foo(const string &in, string *out);在如下情况下, 可以使用const T*的形式: * 需要进行指针的判空 (即空指针是合理的)。 * 需要使用到输入参数的指针或引用形式...
阅读(1608) 评论(1)

大型项目开发: 隔离 (《大规模C++程序设计》书摘)

书中第六章 隔离。 主要在撰述什么需要定义在头文件?什么应当移到编译单元中? 核心仍然是先区分接口定义与实现细节。实现细节的改变会导致客户代码的重新编译,从逻辑上也表示与客户代码间可能存在着强耦合。实现细节与隔离主要考察以下实现细节,它们会在接口中引入实现细节,也是需要考虑进行隔离的内容: 继承 分层 简单的说就是类的成员中有另一个类的实例时,如Foo mFoo. 这个类就会依赖于Foo的定义。...
阅读(1885) 评论(0)
298条 共20页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1525193次
    • 积分:16778
    • 等级:
    • 排名:第616名
    • 原创:221篇
    • 转载:30篇
    • 译文:47篇
    • 评论:362条
    微博/MSN/EMail

    新浪微博:Horky
    QQ:324014340
    Mail:horky.chen@gmail.com
    微信公众号 (聚焦软件开发):
    博客专栏
    最新评论