Linux kernel里面从来就不缺少简洁,优雅和高效的代码 比如,通过限定写入的数据不能溢出和内存屏障实现在单线程写单线程读的情况下不使用锁。因为锁是使用在共享资源可能存在冲突的情况下。还用设置buffer缓冲区的大小为2的幂次方,以简化求模运算,这样求模运算就演变为 (fifo->in & ( ...
分类:
系统相关 时间:
2019-09-20 21:37:27
阅读次数:
186
CPU性能优化手段-缓存为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。例如:CPU高速缓存。尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。多级缓存L1Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。一般服务器CPU的L1缓存的容量通常在32-4096KB。L2由于L1级高速缓存容量的限制,为了再次提高CPU的运算速度,在
分类:
其他好文 时间:
2019-08-29 00:29:09
阅读次数:
135
CPU性能优化手段 缓存 为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。 例如:CPU高速缓存。尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。 多级缓存 L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。一般服务器CP ...
分类:
其他好文 时间:
2019-08-28 22:18:34
阅读次数:
86
1, 2, 3,常用函数 lock中的wait,notify,notifyAll 4,相关例题 Answer-1: 解决办法: 注意这里使用lock-synchronized同步以及屏障 Answer-2: 解决方法: ①定义一个布尔标识符flag,决定轮替输出; ②设置一个lock-synchro ...
分类:
编程语言 时间:
2019-08-23 10:30:01
阅读次数:
315
RAID 6技术是在RAID 5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID 5等级。与RAID 5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区。当然,当前盘数据块的校验数据不可能存在当前盘而是交错存储的,RAID 6每个数据块有两个校验保护屏障(一个分层校验,一个是总体校验),因此RAID 6的数据冗余性能相当好。即使同时损失两块磁盘也不会影响数据使用,但是由于增加了一个校验,所以写入的效率较RAID 5还差,而且控制系统的设计也更为复杂,第二块的校验区也减少了有效存储空间。
分类:
其他好文 时间:
2019-08-22 23:36:30
阅读次数:
142
锁的内存语义本质上可以说是对共享变量的更新,能及时让其他线程观察到;并且通过内存屏障,组织编译器或处理器指令重排序,导致多线程下不一致的现象。 1. volatile内存语义 见上一篇文章。 2. 锁的内存语义 (1)锁的释放和获取的内存语义 当线程释放锁时,JMM会将本地内存中的共享变量同步到主内 ...
分类:
其他好文 时间:
2019-08-13 00:52:36
阅读次数:
151
概述 CyclicBarrier 是并发包中的一个工具类,它的典型应用场景为:几个线程执行完任务后,执行另一个线程(回调函数,可选),然后继续下一轮,如此往复。 打个通俗的比方,可以把 CyclicBarrier 的执行流程比作:几个人(类比线程)围着操场跑圈,所有人都到达终点后(终点可理解为“屏障 ...
分类:
其他好文 时间:
2019-08-08 21:31:06
阅读次数:
109
理论 任何灰度图像都可以看作是一个地形表面,其中高强度表示山峰和丘陵,而低强度表示山谷。用不同颜色的水(标签)填充每个孤立的山谷(局部极小值)。当水上升时,根据附近的峰(梯度),不同山谷不同的颜色的水,显然会开始融合。为了避免这种情况,你在水就要融合的地方及时增加屏障(增高水坝)。你继续填满水,建造 ...
分类:
编程语言 时间:
2019-07-14 22:38:17
阅读次数:
247
CPU性能优化手段 - 缓存 为了提高程序的运行性能, 现代CPU在很多方面对程序进行了优化例如: CPU高速缓存, 尽可能的避免处理器访问主内存的时间开销, 处理器大多会利用缓存以提高性能 多级缓存 L1 Cache (一级缓存)是CPU第一层高速缓存, 分为数据缓存和指令缓存, 一般服务器CPU ...
分类:
其他好文 时间:
2019-07-08 21:05:32
阅读次数:
166
[TOC]Java并发工具CountDownLatch和CyclicBarrier原理解析一,简介CountDownLatch允许一个或者多个线程等待其他线程完成操作。CyclicBarrier的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程达到一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行。
分类:
编程语言 时间:
2019-07-06 00:22:16
阅读次数:
115