05 2014 档案
摘要:两种锁的加锁原理互斥锁:线程会从sleep(加锁)——>running(解锁),过程中有上下文的切换,cpu的抢占,信号的发送等开销。自旋锁:线程一直是running(加锁——>解锁),死循环检测锁的标志位,机制不复杂。两种锁的区别互斥锁的起始原始开销要高于自旋锁,但是基本是一劳永逸,临界区持锁时间...
阅读全文
摘要:C语言的指针跳转访问是一个灵活高效的机制,但是再高效也是要花费额外时间的,下面这个程序如果在gcc -O0不优化的情况,就可以看出指针跳转比直接访问要多消耗10%左右的时间#include #include int main(){ int m = 0; int *p = &m; ...
阅读全文
摘要:下面这个代码用两个双层循环遍历了一个二维数组里所有的元素,以我自己机器的测试 上面那个循环耗时基本为下面的一半,两个循环的时间复杂度相同,为什么会有这么大的差别?首先要明白的是不管是几维数组,他们都是用一块地址连续的内存来存储所有的元素,而内存布局的顺序是一整行接着下一个整行排列,第一个循环是一行一...
阅读全文
摘要:以前大学的时候也喜欢写blog,把获取的新知识进行总结是巩固知识的最好方式,一个人对知识点的掌握程度是 理解知识点<清晰的描述知识点<对这门知识点有新思考,后来上班了,时间不是很充裕,工作上碰到的新东西和一些有意思问题往往没空去总结,都草草的记录在evernote上面,不知不觉上面也有快200条了,...
阅读全文