小编nco*_*ish的帖子

从另一个线程调用 FnMut 回调

我正在为 Rust 编写一个 Phoenix 客户端库,利用rust-websockets 的异步 websocket 客户端。现在我无法弄清楚如何将回调函数传递到处理 websocket 流量的线程中。我有一个简化的结构:

pub struct Socket {
    endpoint:               String,
    connected:              Arc<AtomicBool>,
    state_change_close:     Option<Box<FnMut(String)>>,
}
Run Code Online (Sandbox Code Playgroud)

该结构体的connect功能如下:

pub fn connect(&mut self) -> Result<(), String> {
    if self.connected.load(Ordering::Relaxed) {
        return Ok(())
    }
    
    // Copy endpoint string, otherwise we get an error on thread::spawn
    let connection_string = self.endpoint.clone();
    let (usr_msg, stdin_ch) = mpsc::channel(0);

    let connection_thread = thread::spawn(move || {
        // tokio core for running event loop
        let mut core = Core::new().unwrap();
        let runner …
Run Code Online (Sandbox Code Playgroud)

multithreading rust

3
推荐指数
1
解决办法
1593
查看次数

标签 统计

multithreading ×1

rust ×1