InstanceCreator::Options#
-
inline InstanceCreator<Creator> &YR::internal::InstanceCreator::Options(InvokeOptions &&optsInput)#
设置实例创建的选项,包括资源使用设置。
int main(void) { YR::Config conf; YR::Init(conf); YR::InvokeOptions opts; opts.cpu = 1000; opts.memory = 1000; auto ins = YR::Instance(SimpleCaculator::Constructor).Options(opts).Invoke(); auto r3 = ins.Function(&SimpleCaculator::Plus).Invoke(1, 1); return 0; }
有状态函数指定本地执行(嵌套无状态)。
// Example: Setting options for instance creation int incre(int x) { return x + 1; } YR_INVOKE(incre) struct Actor { int a; Actor() {} Actor(int init) { a = init; } static Actor *Create(int init) { return new Actor(init); } int InvokeIncre(bool local) { auto obj = YR::Function(incre).Options({ .alwaysLocalMode = local }).Invoke(a); return *YR::Get(obj); } MSGPACK_DEFINE(a) }; YR_INVOKE(Actor::Create, &Actor::InvokeIncre) void Forward(bool local) { auto ins = YR::Instance(Actor::Create).Options({ .alwaysLocalMode = local }).Invoke(0); auto obj = ins.Function(&Actor::InvokeIncre).Invoke(true); std::cout << *YR::Get(obj) << std::endl; auto obj2 = ins.Function(&Actor::InvokeIncre).Invoke(false); std::cout << *YR::Get(obj2) << std::endl; } int main() { Forward(true); Forward(false); return 0; }
Warning
此方法专为分布式环境设计,在本地模式下不起作用。请确保在适用资源管理和执行选项的适当上下文中使用它。
Note
此方法在本地模式下无效。它专为分布式场景设计,在这些场景中,资源管理和执行选项至关重要。
- 模板参数:
Creator - 用于构建实例的工作函数的类型。
- 参数:
optsInput - 调用选项,包括资源使用和执行模式。详细描述请参见 结构体说明。
- 返回:
InstanceCreator<Creator>&:
InstanceCreator对象的引用,便于直接调用Invoke方法。。