查找满足给定模板的元组的同步

时间:2013-04-24 15:14:41

标签: c++ synchronization posix shared-memory semaphore

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函数才能使它工作?

0 个答案:

没有答案