Tuple read(Template template)
获取元组的模板作为参数,并从缓冲区(共享内存)返回满足模板的元组。
void write(Tuple tuple)
将一个元组写入共享内存。当没有元组在共享内存中满足模板时,读取功能应该处于睡眠状态。写入应该首先唤醒睡眠过程,当添加适当的元组时。
我已经拥有的东西:
Tuple read(Template template)
{
Tuple result;
down(empty);
int uniqSem = register(template);
down(buffMutex);
Tuple *tuple = find(template);
if(tuple != null_ptr)
{
result = *tuple;
remove(tuple);
up(uniqSem);
}
up(buffMutex);
down(uniqSem);
unregister(uniqSem);
return result;
}
当没有元组满足模板时,这不起作用。然后该过程将入睡并且不会获得结果模板。我怎样才能重新实现read函数并实现write函数才能使它工作?