我正在使用akka集群,以便在两个pahses中执行分布式计算.第一phaseA则phaseB.为了处理阶段,我使用了akka的FSM.
没有硬同步,因此其中一个节点可能会到达,phaseB而其他节点仍在phaseA.
问题是,一个人向他人phaseB发送phaseB-related消息(他们phaseA还在),导致phaseB-related消息松散的原因.
现在我使用简单的技巧推迟未知消息:
case any => self ! any
Run Code Online (Sandbox Code Playgroud)
但IMO并不是这样做的正确方法.我知道我也可以安排any使用akka调度程序,但我也不喜欢这样.
这是简化的代码:
package whatever
import akka.actor._
object Test extends App {
case object PhaseA
case object PhaseB
class Any extends Actor {
def phaseA: Receive = {
case PhaseA => {
context.become(phaseB)
println("in phaseB now")
}
case any => self ! any
}
def phaseB: Receive = {
case PhaseB => println("got …Run Code Online (Sandbox Code Playgroud) 我试图用C++调用一些用Rust编写的函数.到目前为止,我已经相当成功,但CString在运行时期间我仍然遇到一个相关恐慌的小问题.
该函数hello应该采用输入字符串,将其与其他字符串连接并返回产品.
这是我的fun.rs:
use std::ffi::CString;
#[no_mangle]
pub extern "C" fn add(a: i32, b: i32) -> i32 {
a + b
}
#[no_mangle]
pub extern "C" fn hello(cs: CString) -> CString {
let slice = cs.to_str().unwrap();
let mut s = "Hello, ".to_string();
s = s + slice;
CString::new(&s[..]).unwrap() // runtime error
// CString::new(cs).unwrap() // empty string if no borrow
// cs // works if no borrow, but this is not what I meant
}
Run Code Online (Sandbox Code Playgroud)
这是 …