路人甲

不用闪躲,为我喜欢的生活而活 不用粉墨,就站在光明的角落

排序:
默认
按更新时间
按访问量

前台线程和后台线程

Net的公用语言运行时(Common Language Runtime,CLR)能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。...

2014-02-18 14:53:43

阅读数:419

评论数:0

优秀开发人员的十个习惯

作者简介:钱安川,十年软件开发、管理、咨询经验,               曾为淘宝、阿里、百度、华为等IT公司做过软件开发相关咨询工作,               现就职于腾讯soso研发管理组。 视频地址:http://v.youku.com/v_show/id_XMzQzODExO...

2014-02-18 10:48:17

阅读数:904

评论数:1

二八原则

巴莱多定律(也叫二八定律)是19世纪末20世纪初意大利经济学家巴莱多发现的。他认为,在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%尽管是多数,却是次要的,因此又称二八定律。 世界上80%的财富由20%的人掌控; 80%的Bug由20%的人产生。

2014-02-18 10:28:41

阅读数:660

评论数:1

变态的libDispatch源码分析-全局队列异步延时任务处理过程-设置计时器与插入ds

1. 为ds设置计时器,并将其加入到计时任务队列中 (1) .入口 dispatch_source_set_timer(ds, when, 0, 0); when参数由用户提供,有下面几种情况: #define DISPATCH_TIME_NOW 0 #define DISP...

2014-01-22 11:28:50

阅读数:2102

评论数:0

变态的libDispatch源码分析-全局队列异步延时任务处理过程-计时轮询

前文讲到了进入计时队列轮询,通过_dispatch_mgr_invoke进入到了下面这段代码: static dispatch_queue_t _dispatch_mgr_invoke(dispatch_queue_t dq) { static const struct timespec tim...

2014-01-22 10:40:32

阅读数:4954

评论数:0

变态的libDispatch源码分析-全局队列异步延时任务处理过程-原理与创建ds

延时任务的处理通常包括如下几个要素: a). 任务; b). 延时任务队列; c). 计时器,循环检测延时任务队列,若有任务到时则取出,然后执行; 下面分析下GCD中关于libdispatch的延时任务处理方式。 下面这部分代码是根据自身需求,封装的一个接口,基本能满足异步延时任务的处理: v...

2014-01-20 20:49:31

阅读数:2785

评论数:0

变态的libDispatch结构分析-全局队列异步任务处理过程

GCD的异步方式,从插入任务到异步执行任务的代码流程。

2014-01-17 18:33:26

阅读数:1638

评论数:0

变态的libDispatch结构分析-全局队列同步任务处理过程

GCD的处理过程,从全局队列的同步处理任务开始。 先说明一下两个宏定义 #if __GNUC__ #define fastpath(x) ((typeof(x))__builtin_expect((long)(x), ~0l)) #define slowpath(x) ((typeof(x))__...

2014-01-17 16:52:07

阅读数:1561

评论数:0

变态的libDispatch结构分析-semaphore

文件位置: libdispatch/dispatch/semaphore.h libdispatch/src/semaphore.c 针对Dispatch的semaphore定义了三个方法: /*! * @function dispatch_semaphore_create * * @...

2014-01-16 18:32:33

阅读数:2276

评论数:0

bionic semaphore学习

文件位置:bionic/libc/bionic/semaphore.c 头文件位于Linux kernel中 下面是头文件定义的接口: /* Initialize semaphore object SEM to VALUE. If PSHARED then share it with o...

2014-01-16 17:06:21

阅读数:970

评论数:0

UNIX/Linux程序设计教程之错误处理

UNIX的系统调用和大部分库函数在失败时会返回一特殊值报告出错,这个特殊值通常是–1。这种返回值仅告诉调用遇到了错误而已,为了让应用知道究竟发生了什么错误,系统调用和库函数同时还会在系统定义的变量errno中给出指明错误原因的错误码。 变量errno是系统调用和库函数用来报告错误的一种标准方法。...

2014-01-16 16:35:32

阅读数:911

评论数:0

关于一些线程锁相关的心能对比

1. 旋锁spinlock剖析与改进 2. Pthreads mutex vs Pthreads spinlock

2014-01-16 14:53:00

阅读数:633

评论数:0

变态的libDispatch结构分析-原子操作方法

libDispatch 省去了队列锁,代替的是大量的原子操作: 文件位置:libdispatch/src/hw_shims.h #if 0 && defined(__i386__) || defined(__x86_64__) #define dispatch_atomic_xc...

2014-01-16 11:50:13

阅读数:1728

评论数:0

变态的libDispatch结构分析-全局队列

1. pthread_key_t 在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。 在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。但有时 应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效; 但却可以跨多个函数访问,比如程...

2014-01-15 19:25:08

阅读数:2718

评论数:0

webkit之FrameLoader

1. 概述 顾名思义,FrameLoader是一个Frame的loader,它的作用就是为客户提供一个下载一个Frame的一系列接口。这里的客户指的是类的客户,比如Frame类,间接客户是上层应用,比如qwebframe。 从它的定义看,最容易想到的是一个load接口,用来将一个frame l...

2014-01-15 15:43:43

阅读数:1158

评论数:0

Ubuntu工具集合

工欲善其事,必先利其器 Ubuntu UML工具: Umbrello, DIA;

2014-01-15 08:45:08

阅读数:534

评论数:0

Webkit之Frame

Webkit之Frame

2014-01-14 19:55:40

阅读数:898

评论数:0

webkit之backForwardController

backForwardController负责Page中前进后退的管理,UML图如下: static PassOwnPtr create(Page*, PassRefPtr); BackForwardList* client() const { return m_cl...

2014-01-14 19:43:49

阅读数:938

评论数:0

webkit之RenderTheme

RenderTheme主要用于渲染。 提供接口渲染按钮、输入框、列表框等。其实现依赖与平台。 这里以Android平台为例: 文件位置: Source/WebCore/rendering/RenderTheme.h Source/WebCore/platform/android/RenderThe...

2014-01-14 19:09:19

阅读数:746

评论数:0

Webkit中Chrome和chromeclient

可以先参看地瓜的blog: http://blog.csdn.net/dlmu2001/article/details/6208241 地瓜的文章分析的很清楚,我之所以要再累赘,因为我基于的平台是chrome的。 上面这个图是一个基本的UML图,chrome中所使用的chromeclient由...

2014-01-14 18:19:23

阅读数:1170

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭