Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 如何锁定()。在非异步代码上等待futures::lock::Mutex let vpn_客户端:Arc=。。。 let on_virtual_tun_write=Arc::new( 移动| f:&mut-dyn-FnMut(&mut[u8]),大小:usize |->std::result::result{ 让mut buffer=vec![0;size]; f(buffer.as_mut_slice()); 匹配vpn_客户端_u.lock().wait.send(buffer.as_slice()) //..._Asynchronous_Rust_Future - Fatal编程技术网

Asynchronous 如何锁定()。在非异步代码上等待futures::lock::Mutex let vpn_客户端:Arc=。。。 let on_virtual_tun_write=Arc::new( 移动| f:&mut-dyn-FnMut(&mut[u8]),大小:usize |->std::result::result{ 让mut buffer=vec![0;size]; f(buffer.as_mut_slice()); 匹配vpn_客户端_u.lock().wait.send(buffer.as_slice()) //...

Asynchronous 如何锁定()。在非异步代码上等待futures::lock::Mutex let vpn_客户端:Arc=。。。 let on_virtual_tun_write=Arc::new( 移动| f:&mut-dyn-FnMut(&mut[u8]),大小:usize |->std::result::result{ 让mut buffer=vec![0;size]; f(buffer.as_mut_slice()); 匹配vpn_客户端_u.lock().wait.send(buffer.as_slice()) //...,asynchronous,rust,future,Asynchronous,Rust,Future,正如您在上面的示例中所看到的,我有一个Arc。我使用futures::lock::Mutex来处理异步代码中的其他内容,但是有一个库,它接受非async的,所以我不能lock()。在这个回调中等待这个互斥体 我怎样才能lock()。在一些async代码之外等待这个互斥体?这是一个好的解决方案吗?我不能使用非异步互斥体,因为代码的其余部分。这能回答你的问题吗? let vpn_client: Arc<futures::lock::Mutex<dyn VpnClient>&

正如您在上面的示例中所看到的,我有一个
Arc
。我使用
futures::lock::Mutex
来处理异步代码中的其他内容,但是有一个库,它接受非
async
,所以我不能
lock()。在这个回调中等待
这个互斥体


我怎样才能
lock()。在一些
async
代码之外等待这个互斥体?这是一个好的解决方案吗?我不能使用非异步互斥体,因为代码的其余部分。

这能回答你的问题吗?
    let vpn_client: Arc<futures::lock::Mutex<dyn VpnClient>> = ...

    let on_virtual_tun_write = Arc::new(
        move |f: &mut dyn FnMut(&mut [u8]),size: usize|  -> std::result::Result<(), VirtualTunWriteError> {
            let mut buffer = vec![0; size];
            f(buffer.as_mut_slice());
            match vpn_client_.lock().await.send(buffer.as_slice())
            //...