CyclicBarrier概念:CyclicBarrier是多线程中的一个同步工具,它允许一组线程互相等待,直到到达某个公共屏障点。形象点儿说,CyclicBarrier就是一个屏障,要求这一组线程中的每一个线程都要等待其他的线程执行完成,即这一组线程全部来到屏障前(全部执行完成),屏障才会打开,放 ...
分类:
编程语言 时间:
2019-01-20 18:01:39
阅读次数:
160
有两种基元构造:用户模式和内核模式。 应该尽量使用基元用户模式构造,因为它的速度明显高于后者。这是因为他们使用特殊的CPU指令来协调线程,这意味着协调是在硬件中发生的。但是,这也意味着win32系统永远无法检测到一个线程在一个基元用户模式构造上阻塞了。除此之外这些CPU指令只是阻塞线程极短的一些时间 ...
分类:
编程语言 时间:
2019-01-17 21:15:09
阅读次数:
177
假设:有两个boy,都要玩同一个toy,此时就会出现同步情况,必须一个玩好了,另一个才能玩。多线程也是这样子。如果程序不是高并发的场景,则使用synchronized线程同步足够处理。synchronized关键字解释(synchronized(this)同步代码块也可以被替换为同步对象方法或者同步类方法,本质是一样的):多个线程,访问同一个对象中的synchronized(this)同步代码块时
分类:
编程语言 时间:
2019-01-15 14:28:34
阅读次数:
178
42.1 线程状态转换 42.1.1 状态转换图 42.1.2 一个线程计算,多个线程获取的案例 编译运行结果如下: 42.2 读者-写者案例 几种情况: 1 个写者,1 个读者 1 个写者,多个读者 多个写者,多个读者 1 个写者,1 个读者 1 个写者,多个读者 多个写者,多个读者 完成第一种情 ...
分类:
编程语言 时间:
2019-01-13 20:26:56
阅读次数:
300
条目十一《理解自定义分配子的合理用法》 根据大牛们的测试: STL默认的内存管理器(allocator)太慢,或者浪费内存,或者在使用的时候会产生内存碎片。 又或者需求不一样时: 1.allocator是多线程安全的,而你运行环境是单线程,所以想减少线程同步带来的te不必要开销。 2.当想把容器的对 ...
分类:
其他好文 时间:
2019-01-12 01:03:20
阅读次数:
139
41.1 概念 41.1.1 条件变量的介绍 互斥锁的缺点是它只有两种状态:锁定和非锁定 条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足 条件变量内部是一个等待队列,放置等待的线程,线程在条件变量上等待和通知,互斥锁用来保护等待队列(对等待队列上锁),条件变量通常和互斥锁一 ...
分类:
编程语言 时间:
2019-01-11 23:19:47
阅读次数:
270
dispatch_sync 线程同步、dispatch_async线程异步 这些代码输出的结果是 1 2 3 4 依次输出、无论你运行多少次都会是这一种结果 但是来看下面的异步呢? 输出的结果是 1 2 3 4 随机输出、有时 2 1 3 4 有时 1 3 2 4 等 在iOS中是无法使用 disp ...
分类:
其他好文 时间:
2019-01-10 10:58:10
阅读次数:
127
一,String,StringBuffer,StringBuilder三者之间的关系 三个类的关系:StringBuffer和StringBuilder都继承自AbstractStringBuilder这个类, 而AbstractStringBuilder和String都继承自Object这个类(O ...
分类:
其他好文 时间:
2019-01-08 19:27:29
阅读次数:
133
[原文] 一、多线程与单线程像java、python这个可以具有多线程的语言。多线程同步模式是这样的,将cpu分成几个线程,每个线程同步运行。而node.js采用单线程异步非阻塞模式,也就是说每一个计算独占cpu,遇到I/O请求不阻塞后面的计算,当I/O完成后,以事件的方式通知,继续执行计算2。事件 ...
分类:
编程语言 时间:
2019-01-07 21:09:58
阅读次数:
156
先看一个问题: 有两个线程,子线程先执行10次,然后主线程执行5次,然后再切换到子线程执行10,再主线程执行5次……如此往返执行50次。 看完这个问题,很明显要用到线程间的通信了, 先分析一下思路:首先肯定要有两个线程,然后每个线程中肯定有个50次的循环,因为每个线程都要往返执行任务50次,主线程的 ...
分类:
编程语言 时间:
2019-01-06 18:53:01
阅读次数:
145