小编Sco*_*ony的帖子

在Akka中推迟消息的正确方法

我正在使用akka集群,以便在两个pahses中执行分布式计算.第一phaseAphaseB.为了处理阶段,我使用了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)

scala akka

6
推荐指数
1
解决办法
700
查看次数

将C++与Rust连接 - 返回CString恐慌

我试图用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)

这是 …

c++ c-strings rust

2
推荐指数
1
解决办法
399
查看次数

标签 统计

akka ×1

c++ ×1

c-strings ×1

rust ×1

scala ×1