09 2012 档案

摘要:源码分析版本:glic-2.9spin_lock加锁pthread_spin_lock:intpthread_spin_lock (lock) pthread_spinlock_t *lock;{ asm ("\n" "1:\t" LOCK_PREFIX "decl %0\n\t" //锁总线,开始加锁,在%0 "jne 2f\n\t" //加锁不成功,jns 汇编指令检查 EFLAGS 寄存器的 SF(符号)位,如果为 0,说明 slock 原来的值为 1,则线程获得锁,然后跳到标签 2 的位置结束本次函数调用。 阅读全文
posted @ 2012-09-27 21:04 北海石松 阅读(3155) 评论(0) 推荐(0)
摘要:测试环境:24CPU 2.4GHz ,32G内存实验数据:mutex.cView Code #include <stdio.h>#include <pthread.h>#include <stdlib.h>#include <sys/time.h>#define MAX_LOOP 1000000#define CODE_LEN 10long g_count = 0;int thread_count = 20;int lock_count = 0;int loop_count = 1000000;int code_len = 1;pthread_m 阅读全文
posted @ 2012-09-27 01:48 北海石松 阅读(1545) 评论(0) 推荐(0)
摘要:堆(heap)和栈(stack)是C/C++编程不可避免会碰到的两个基本概念。首先,这两个概念都可以在讲数据结构的书中找到,他们都是基本的数据结构,虽然栈更为简单一些。在具体的C/C++编程框架中,这两个概念并不是并行的。对底层机器代码的研究可以揭示,栈是机器系统提供的数据结构,而堆则是C/C++函数库提供的。具体地说,现代计算机(串行执行机制),都直接在代码底层支持栈的数据结构。这体现在,有专门的寄存器指向栈所在的地址,有专门的机器指令完成数据入栈出栈的操作。这种机制的特点是效率高,支持的数据有限,一般是整数,指针,浮点数等系统直接支持的数据类型,并不直接支持其他的数据结构。因为栈的这种特点 阅读全文
posted @ 2012-09-07 09:01 北海石松 阅读(742) 评论(0) 推荐(0)
摘要:奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机科学家,他请这些科学家投票选出最重要的算法,以下是这次调查的结果,按照英文名称字母顺序排序。A* 搜索算法——图形搜索算法,从给定起点到给定终点计算出路径。其中使用了一种启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定次序。算法以得到的次序访问这些节点。因此,A*搜索算法是最佳优先搜索的范例。集束搜索(又名定向搜索,Beam Search 阅读全文
posted @ 2012-09-06 09:17 北海石松 阅读(291) 评论(0) 推荐(0)
摘要:文件:kthread.c 1 /** 2 * kthread_create - create a kthread. 3 * @threadfn: the function to run until signal_pending(current). 4 * @data: data ptr for @threadfn. 5 * @namefmt: printf-style name for the thread. 6 * 7 * Description: This helper function creates and names a kernel 8 * thread. The ... 阅读全文
posted @ 2012-09-02 23:49 北海石松 阅读(4712) 评论(0) 推荐(0)