赞
踩
这里就不具体介绍了,网上一堆关于生产者消费者模式的介绍,这是一个常用的设计方法,只要牵扯多个线程之间协作一般就需要这个设计方法,简单意思就是有个缓冲负责两个线程之间的交流,一个线程往缓冲区写数据,一个线程从缓冲区读数据。
队列缓冲区:缓冲区一般是一个list,每次要写的数据都是新建一块内存,然后将这个内存指针压入队列,读缓冲区就是从队列尾读取,处理完后,将内存释放;这个方法显然存在大量的内存分配和释放,会造成大量CPU开销;
环形缓冲区:一般如果每次处理的数据大小固定,或者虽然大小不固定,但是肯定不会超过某个大小,就可以先分配一定数量的内存块,由于数量有限,所以当数据写到最后一块内存后,再重新回到第一块内存写入,这些内存就像首尾相连一样,类似一个环;
双缓冲区:感觉是环形缓冲区如果是两个缓冲区就是双缓冲区;
这里就是一个同步问题,环形缓冲区一般使用信号量同步,队列缓冲区可以使用信号量,也可以使用互斥锁,这个看具体应用;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。