A、基础知识点:

  • GCD是异步执行任务的技术之一。一般讲应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务。(也就是说GCD用我们难以置信的非常简洁的记述方法,实现了极为复杂的多线程编程。)
  • 执行处理时,存在两种Dispatch Queue,一种是等待现在执行中处理的Serial Dispatch Queue(串行队列),另一种是不等待现在执行中处理的Concurrent Dispatch Queue(并行队列)。(Note: Concurrent Dispatch Queue 虽然不用等待处理结束,可以并行执行多个处理,但并行执行的处理数量取决于当前系统的状态。即,当前系统状态允许再新派线程数量,这也是表现了GCD使用线程资源的自平衡合理之处)
  • 手动生成的Dispatch Queue必须由程序员负责释放,这是因为Dispatch Queue并没有想Blocks那样具有作为Obj-c对象来处理的技术。
  • 系统标准提供的Dispatch Queue,一个是 Main Dispatch Queue ,另一个是Global Dispatch Queue。主线程只有一条,所以Main Dispatch Queue自然就是Serial Dispatch Queue;Global Dispatch Queue是Concurrent Queue,它有四个执行优先级:High Priority,Default Priority,Low Priority, Backgroud Priority。
  • Dispatch Group 使用场景,『多个子任务并发,最后执行「完结任务」做结束』;追加到Dispatch Queue中的多个处理全部结束后想执行『结束处理』。使用dispatch_group_notify( )进行callback『结束处理』
  • Dispatch_barrier_async使用场景,『公共数据读写』:需要并发读取数据库read_db_blocks,同时可能有写入write_db_blocks场景。
  • Dispatch_apply(count,queue,^{ someThinsDoing }) 使用场景,『重复某限定次数count,在指定queue上,执行count此 block』,注意的是dispatch_apply 在同步在当前queue。
  • Dispatch_semaphore使用场景,精确粒度的排他性,信号0时才允许通过『修改』。
  • Dispatch_one使用场景,多核多线程安全的单例实现。
  • Dispatch I/O 和Dispatch Data 使用场景,大文件的并发读取,分割。

B、关键知识点:

  • 避免使用旧线程技术,使用GCD:多线程编程问题,如果过多使用多线程,就会消耗大量内存,引起大量的上下文切换,大幅度降低系统的响应性能。
  • 使用Serial Dispatch Queue: 最大目的是,为了避免多线程编程问题,多个线程更新相同资源导致数据竞争。

code snippet example


1、Serial Dispatch & Concurrent Dispatch Queue

1
2
dispatch_queue_t mySerialQueue = dispatch_queue_create("com.testSerialQueue", NULL);//串行queue
dispatch_queue_t myConcurrentQueue = dispatch_queue_create("com.testSerialQueue", DISPATCH_CURRENT_QUEUE_LABEL);//并发queue

2、Dispatch Group 是开源库TMCache线程安全缓存的使用的技术

1
2
3
4
5
6
7
8
9
10
11
[_memoryCache setObject:object forKey:key block:memBlock];
[_diskCache setObject:object forKey:key block:diskBlock];

if (group) {
    __weak TMCache *weakSelf = self;
    dispatch_group_notify(group, _queue, ^{
        TMCache *strongSelf = weakSelf;
        if (strongSelf)
            block(strongSelf, key, object);
    });
}

3、dispatch_barrier_async 同样被TMCache 充分发挥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 dispatch_barrier_async(_queue, ^{
    TMMemoryCache *strongSelf = weakSelf;
    if (!strongSelf)
        return;

    [strongSelf removeObjectAndExecuteBlocksForKey:key];

    if (block) {
        __weak TMMemoryCache *weakSelf = strongSelf;
        dispatch_async(strongSelf->_queue, ^{
            TMMemoryCache *strongSelf = weakSelf;
            if (strongSelf)
                block(strongSelf, key, nil);
        });
    }
});

参考资料:

  1. 《Grand Central Dispatch (GCD) Reference》
  2. 《Objective-C高级编程 iOS与OS X多线程和内存管理》
  3. 《Concurrency Programming Guide》

飞快浮躁的时代,灯红酒绿地信息轰炸,往往繁乱无益。

『阅读习性』的把控,显得重要。如果以『有筋骨、有节律』为文字原则,可以轻松过滤90%的文字噪音。

文章形神就如同人体的形态体魄。骨骼中正坚硬,则筋骨的地基深厚,不容易被大风大浪吹移;肌肉覆盖均衡而有节次,则体型建筑匀称不偏不倚,可有鹤立鸡群的标志感;言行容止绝缘狂妄,则精神状态良好,显得有静气有磁场引力。

有筋骨

立题当精辟,没筋骨则直接忽略此文章、此编辑、此作者出处吧,果断过滤噪音类阅读。立题有独到性,多从文眼看出。『文眼』一般在几处,标题、首尾、点睛句。深泉文集用『提要』方式抽出筋骨之处就在此目标。

比如,这篇的标题就有力地表现了文章的立题筋骨。

《如果你的资源贫乏,那么专注做好一件事将是你的唯一出路》

有节律

有好内容,且内容组织有序有节律,营造出跌宕起伏、抑扬顿挫的漂亮旋转,实在就是篇经典文章了。这类文章可遇不可求。并且一般都是在某个专业上潜心多年的大学老师的深刻心得作品,比如下面两篇:

《闲聊毛泽东的权术》

  • 跌宕起伏地举例表现出毛泽东极富战略战术家的天赋,复杂、高超、诡异地战术手段狙击对手

《明朝灭亡的深层次原因》

  • 精炼地描绘了大明276年国祚的发展曲线,巧妙深沉而不失轻盈的勾勒出关键点。

对于经典的好文章,应该在开头声明阅读时长,如本文”需要6min”。

有气场

文字的气场,其实就像人的气场。『天然地自信』是迸发气场的关键指标。天然自信,第一种有充分论证来支持,第二种是毫无支撑地自信。第一种还较容易感染,第二种就微妙多了,就像有一些富有感染的人,大家很享受他能把假话说得比真话更像真话。

《仁和智本合伙人陈宇:赚大钱的逻辑》

  • 通过阿里和苏宁案例,点名出趋势之争、不同维度体系里竞争的可怕之处。

《梁漱溟:做学问的八个境界》

  • 没有案例论证的点明,需要具有一定悟性的同频者有直观共鸣。

《创造天赋:达·芬奇的7种天才特质》

  • 综合型的作者自信体现

上个月21号仔细参观了深圳高交会,一个月来沉淀在脑子里的,印象较为深刻地归结为这么几个类型的『工具』。

提升纬度审视事物

贵州展台那里有如下图的统计,通过对游客的联通手机进行分析:计算出实时客流总量,旅游热门地点排行,客流运动趋势。 回到大数据之前,其实这个事物的规律一直存在那里。只是更廉价的计算环境和节点让大数据这一工具得到表达出来的机会。 而这确实就是一个纬度化的工具提升。让人们对社会现象精确把控提供了强有力支撑。类似的工具还有大规模人群的视频动态分析套件,动态标记视频中各种群体的属性,第一时间标记出潜在犯罪恐怖分子;四轴飞行器,好像虽是个玩具,但是站在高空俯视的视角,将很快会出现带上VR眼睛去神游物外观察,还有在未来战争中成为狙击利器;全息成像,或许还不单单是电影中开一个真人现场的会议,而是更真实地『创造』出一个壮观澎湃的『全息世界』。

贵州旅游大数据guizhou-bigdata

全息的开始:想想如果百年后的场景,自己的子孙能够和同龄全息的自己对话那还蛮超现实的。(当然灵魂这东西肯定不在全息里面的)http://7xkxfg.com2.z0.glb.qiniucdn.com/liangmingwei.html

新民用能源—电动车&实时无线充电

电动车将不止停留于tesla上,到那时能源问题估计就会得到一定程度解决了。再然后社会跑动的频率不受限石油的约束之后,社会将更会有更多的自由事物的涌现,那就值得期待了。 比如,手机和『新互联设备』不受限电池续航和基本网络的联通,这应当很快成为可能吧。

崭新时代的建筑基石—石墨烯&核聚变

石墨烯这玩意,想象大的说来,或许能够重塑现在的基础材料现状。应用出很多『超现实』的工具出来,或许那个时候会像那个老外说的『奇点』的到来,然后人类一下子进化成了我们一直期待存在的那种超级高级的外星文明。加上核聚变的及时普及化,让地球村能及时刹车抢资源导致的毁灭战争。进入神奇的新纪元。

极为跳跃和异想天开地总结这三类工具属性。不是流行马云那句话吗。有想象总是好的,万一蒙对踩对了呢^_^