当前位置: 首页>>代码示例>>C++>>正文


C++ VM::getAtom方法代码示例

本文整理汇总了C++中VM::getAtom方法的典型用法代码示例。如果您正苦于以下问题:C++ VM::getAtom方法的具体用法?C++ VM::getAtom怎么用?C++ VM::getAtom使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在VM的用法示例。


在下文中一共展示了VM::getAtom方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1:

  gc<Object> ChannelObject::receive(VM& vm, gc<Fiber> receiver)
  {
    // If the channel is closed, immediately receive 'done'.
    if (!isOpen_) return vm.getAtom(ATOM_DONE);

    // If we have a sender, take its value.
    if (senders_.count() > 0)
    {
      gc<Fiber> sender = senders_.removeAt(0);
      return sender->sendValue();
    }

    // Otherwise, suspend.
    receivers_.add(receiver);
    return NULL;
  }
开发者ID:DawidvC,项目名称:magpie,代码行数:16,代码来源:Object.cpp

示例2: close

  bool ChannelObject::close(VM& vm, gc<Fiber> sender)
  {
    if (!isOpen_) return false;
    isOpen_ = false;

    // If nothing is going to receive the "done". Just ignore it and close
    // immediately.
    if (receivers_.count() == 0) return false;

    // Send "done" to all of the receivers.
    for (int i = 0; i < receivers_.count(); i++)
    {
      receivers_[i]->storeReturn(vm.getAtom(ATOM_DONE));
      receivers_[i]->ready();
    }

    receivers_.clear();

    // Add the sender back to the scheduler after the receiver so it can
    // continue.
    sender->ready();

    return true;
  }
开发者ID:DawidvC,项目名称:magpie,代码行数:24,代码来源:Object.cpp


注:本文中的VM::getAtom方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。