6
演员模型:为什么Erlang / OTP特别?你能用另一种语言吗?
我一直在研究Erlang / OTP,因此,一直在阅读(好的,略读一下)演员模型。 据我了解,参与者模型只是一组功能(在Erlang / OTP中称为“进程”的轻量级线程中运行),它们仅通过消息传递相互通信。 用C ++或任何其他语言实现这似乎微不足道: class BaseActor { std::queue<BaseMessage*> messages; CriticalSection messagecs; BaseMessage* Pop(); public: void Push(BaseMessage* message) { auto scopedlock = messagecs.AquireScopedLock(); messagecs.push(message); } virtual void ActorFn() = 0; virtual ~BaseActor() {} = 0; } 每个进程都是派生BaseActor的实例。Actor仅通过消息传递相互通信。(即推动)。参与者在初始化时向中心地图注册自己,该地图允许其他参与者找到他们,并允许中心功能贯穿他们。 现在,我知道我在这里遗漏了,或者更确切地说,是在掩盖一个重要问题,即:缺乏屈服意味着单个Actor可能不公平地消耗过多时间。但是跨平台协程是C ++中使这一点变得困难的主要因素吗?(例如,Windows具有纤维。) 我还有什么想念的吗,或者模型真的很明显吗?