1
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;
}

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

4

0 回答 0