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;
}
当没有满足模板的元组时,这将不起作用。然后该过程将进入休眠状态并且不会获得结果模板。如何重新实现读取功能并实现写入功能以使其工作?