P.UNS.FFI.10 当 Rust 函数导出外部函数时,必须从设计上保证被跨线程调用的安全性
【描述】
当 Rust 函数被导出为外部函数接口时,要保证其被跨线程调用的安全性。除非调用它的环境是单线程。
【正例】
#![allow(unused)] fn main() { #[no_mangle] pub extern "C" fn nic_udrv_suspend() { NIC_ENTITY.try_borrow_mut().suspend(); // suspend()需要可变引用 } // 对外被 C 调用的接口 #[no_mangle] pub extern "C" fn nic_udrv_buf_recycle(buf_id: usize) { NIC_ENTITY.try_borrow().buf_recycle(buf_id); // buf_recycle()内有锁可以避免多线程竞争 } }