Avatar ·

मल्टीथ्रेडिंग के लिए Rust में Mutex और RwLock का उपयोग कब करें?

नमस्ते साथियों! मैं Rust और मल्टीथ्रेडिंग सीख रहा हूँ, और मुझे दो synchronization primitives मिले: `Mutex` और `RwLock`। दोनों ही डेटा को race conditions से बचाते हैं, लेकिन मुझे पूरी तरह से समझ नहीं आ रहा कि कब किसे चुनना चाहिए। मेरे पास एक प्रोजेक्ट है जहाँ कई threads एक shared cache (HashMap) में डेटा पढ़ते हैं और कभी-कभी लिखते भी हैं। मैंने `Mutex` के साथ एक सरल उदाहरण लिखा, लेकिन मुझे लगता है कि यह optimal नहीं है, क्योंकि reading अन्य readings को block कर देता है: ```rust use std::sync::{Arc, Mutex}; use std::thread; use std::collections::HashMap; fn main() { let cache = Arc::new(Mutex::new(HashMap::new())); let mut handles = vec![]; for i in 0..10 { let cache = Arc::clone(&cache); handles.push(thread::spawn(move || { let mut data = cache.lock().unwrap(); data.insert(i, for