Thread缓冲池的实现
在应用中,我们常常需要Thread缓冲池来做一些事以提高程序的效率和并发性。本文演示了如何利用Queue这种数据结构实现一个简单的Thread缓冲池。#D'm#c,eI9|
一个Thread缓冲池可以设计成以下这样:缓冲池由几个工作Thread和一个Queue组成,Client负责把任务放到Queue里面(put方法),而工作Thread就依次取出这些任务并执行它们(get方法)。 (X3l.A0\g7Gu
:wjt8j]$};~` t
#kp8|9QjM1}0ih/{.}#{
Queue的一个经典实现是使用一个循环数组(这个实现在很多数据结构的书上都有介绍),如一个大小为size的数组,这个循环数组可以被想象成首尾相连的一个环。oldest指向Queue中最老的数据所在的位置,next指向下一个可以放新数据的位置。 n*R1Ac yv
#Yu/IY4g!~%_
放入一个新数据到next的位置后,需要更新next:next = (next + 1) % size;
wtXfM eL6A
p B3ZB{/gM&Z9S
从oldest位置取出一个数据后,需要更新oldest:oldest = (oldest + 1) % size;
oIa+djf ?Vo
当oldest == next的时候,Queue为空,