摘要:
1、环形缓冲区(下面生产者消费者的例子使用) 使用一段内存空间作为缓冲区,维护两个指针,一是读指针,指向缓冲空间的第一个可读位置;二是写指针,指向空间的第一个空位置。读取一个数据后,读指针+1,当指针位置超出缓冲区域则指向缓冲区域的头位置(置0);写入一个数据后,写指针+1,当指针位置超出缓冲区域则指向缓冲区域的头位置(置0);由于空间循环利用,故称为环形缓冲区。 空间满和空都是读指针位置等于写指针位置。如何判断空间已满?空?方法1:废弃一个缓冲空间不用,当写指针+1等于读指针的时候(意思是写指针多跑一圈快要赶上读指针),此时表明空间已满。方法2:维护一个变量记录缓冲区使用大小,当大小等于.. 阅读全文
posted @ 2013-06-18 21:55
iyjhabc
阅读(6137)
评论(1)
推荐(1)
摘要:
一 pthread_tpthread_t在头文件/usr/include/bits/pthreadtypes.h中定义:typedef unsigned long int pthread_t;它是一个线程的标识符。二 pthread_create函数pthread_create用来创建一个线程,它的原型为:extern int pthread_create __P ((pthread_t *__thread, __constpthread_attr_t *__attr,void *(*__start_routine) (void *), void *__arg));第一个参数为指向线程标识符的 阅读全文
posted @ 2013-06-18 17:13
iyjhabc
阅读(2551)
评论(0)
推荐(0)
摘要:
使用bitset可以方便地进行位操作,并可转为string型和无符号整型。#include <bitset>int main(){ //构造函数 bitset<16> a(3);//整数转二进制 bitset<5> b("101010"); //输出流与随机存取 cout<<b<<" "<<b[1]<<endl; //置位 a.set();//全部置位 b.set(0);//置第一位 cout<<a<<" "<<b& 阅读全文
posted @ 2013-06-18 14:59
iyjhabc
阅读(226)
评论(0)
推荐(0)
摘要:
胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。 不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。 胜者树与败者树可以在log(n)的时间内找到最值。任何一个叶子结点的值改变后,利用中间结点的信息,还是能够快速地找到最值。在k路归并排序中经常用到。 叶子节点相当于参赛选手,中间节点是比赛,比赛中败者记录在中间节点,胜者继续参加后面的比赛,直到根节点。根节点之上的一个节点用来记录最终胜者。 败者树的建立:在参赛者数组b[]的最后添加一位,存... 阅读全文
posted @ 2013-06-18 09:37
iyjhabc
阅读(9155)
评论(0)
推荐(0)

浙公网安备 33010602011771号