C FFI 라이브러리에 대한 Rust 래퍼를 작성하려고하지만 기본 라이브러리에는 스레드로부터 안전하지 않은 일부 기능이 있습니다. 이러한 함수에 액세스하려면 C 라이브러리의 상태를 보호하는 일종의 전역 잠금이 필요합니다.Rust에서 FFI 호출에 대한 액세스 동기화 (전역 RWLock을 통해)
std::sync::RWLock
또는 이와 유사한 메커니즘을 사용하여 C 라이브러리에 대한 액세스를 제어 할 수있는 방법이 있습니까? sync::mutex::StaticMutex
를 사용
error: function calls in constants are limited to struct and enum constructors [E0015]
example.rs:18 static global_state_lock: RWLock<()> = RWLock::new(());
안전하지 않은 코드를 사용하지 않으면 가능하지 않다고 생각합니다. 자물쇠를 전달해야합니다, 그것은'Sync + Send'이므로 아무 문제가 없습니다. – snf