使用两个线程,一个负责接收(A),一个负责处理入库(B>,假设队列名为L,A接收到数据后,在队列中插入数据后,使用L.notifyAll().
B线程:
while(L.empty())
{
l.wait();
}
处理数据,入库.
.....
大概意思如此.
B线程:
while(L.empty())
{
l.wait();
}
处理数据,入库.
.....
大概意思如此.
deposit(data){
p(avail)
送数据入缓冲区
v(full)
}
remove(data){
p(full)
取缓冲区中数据进行处理
v(avail)
}
信号量avail表示有界缓冲区的空单元数,初值为单元个数
信号量full表示有界缓冲区中非空单元数,初值为0。
p操作代表是信号量减1,如果信号量<=0代表资源不可用
v操作代表信号量加1
T2只管从Data中取数据。
Queue.enter()和Queue.out()这两个方法,数据先进先出,至于送数据入缓存是很容易的,因为我的socket是客户端驱动,就是说只要有数据进来,我就把他送到Queue中去,但是,数据处理入库的操作我该怎么来驱动呢?而且,该怎么让他自动去读取Queue中的数据呢?最好能写出简单的代码来讨论,谢谢各位。
我上面方法的话就是检查full变量
[email protected]
这样两个进程依据full,avail两个信号两,这样就不会出现队列满了,还
进行插入,队列空了还要求提出信息。
至于“从队中取”进程,用time每隔一个固定时间查一次就行了