ฉันมีโค้ด Rust บางตัวที่ส่งพอยน์เตอร์ไปยังฟังก์ชัน FFI เช่นนี้
let mut mu = MaybeUninit::uninit();
let mut p = mu.as_mut_ptr();
let r = unsafe {
ffi_fn(&mut p)
};
วิธีนี้ใช้ได้ดีกับเธรดเดียว แต่สำหรับหลายเธรด ฉันคิดว่า MaybeUninit::uninit()
จะให้ตัวชี้เดียวกันไปยังสองเธรดพร้อมกัน ซึ่งทำให้เกิดปัญหา
MaybeUninit
เกี่ยวข้องอะไรกับว่าตัวชี้เหมือนกันสำหรับหลายเธรดหรือไม่ - person trentcl   schedule 29.09.2019sqlite3_open
ใช้ตัวชี้เป็นอาร์กิวเมนต์ที่ 2 sqlite.org/c3ref/open.html - person zino   schedule 29.09.2019null
ได้ แต่เช่นเดียวกับ @trentcl ฉันไม่คิดว่าคำถามของคุณมีข้อมูลไม่เพียงพอที่จะตอบคำถาม โดยเฉพาะอย่างยิ่ง สิ่งนี้ไม่เกี่ยวข้องกับเธรด และฉันไม่เห็นว่าเหตุใดจึงเป็นปัญหาในการให้ค่าเดียวกันกับฟังก์ชันนี้พร้อมกัน - person mcarton   schedule 29.09.2019sqlite3_open
นำตัวชี้ที่ไม่แน่นอนไปยังตัวชี้ที่ไม่แน่นอนไปยังบางสิ่งบางอย่าง ตัวชี้แรก (สิ่งที่อยู่ในMaybeUninit
) จะไม่เกี่ยวข้อง เนื่องจากทันทีที่ค่าใต้ตัวชี้ด้านนอกสุดถูกแทนที่ ค่านั้นจะแตกต่างจากค่าที่MaybeUninit
เก็บไว้ เพียงใช้std::ptr::null
หรือstd::ptr::null_mut
- person Optimistic Peach   schedule 29.09.2019