MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / concurrent_reserves

Function concurrent_reserves

nodedb-mem/src/budget.rs:337–362  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

335
336 #[test]
337 fn concurrent_reserves() {
338 use std::sync::Arc;
339 use std::thread;
340
341 let budget = Arc::new(Budget::new(10_000));
342 let mut handles = Vec::new();
343
344 for _ in 0..10 {
345 let b = Arc::clone(&budget);
346 handles.push(thread::spawn(move || {
347 let mut reserved = 0;
348 for _ in 0..100 {
349 if b.try_reserve(10) {
350 reserved += 10;
351 }
352 }
353 reserved
354 }));
355 }
356
357 let total_reserved: usize = handles.into_iter().map(|h| h.join().unwrap()).sum();
358
359 // All 1000 reservations of 10 bytes should succeed (10 * 100 * 10 = 10000).
360 assert_eq!(total_reserved, 10_000);
361 assert_eq!(budget.allocated(), 10_000);
362 }
363}

Callers

nothing calls this directly

Calls 5

sumMethod · 0.80
joinMethod · 0.80
spawnFunction · 0.50
pushMethod · 0.45
try_reserveMethod · 0.45

Tested by

no test coverage detected