нечто вроде
let s: &'static [u8] = &[0,0,0,2,1,1,0,0,0,3,1,1,1,0,0,0,2,1,1, ..];
let index = AtomicUsize::new(0);
// share static slice and index across some threads and do this in each thread:
match s.get(index.load()..) {
Some([z,x,c,v,..]) => { let number = usize::from_le_bytes([z,x,c,v]); index.store(number); /* other code */ },
_ => (),
}
Как так сделать, чтобы всё от "s.get(index.load()..)" и до "index.store(number)" было как бы одной атомарной операцией? Не хочу индекс пихать в мутекс.
Так, ладно, не надо, проще в однотредовом режиме сразу сгенерировать все индексы и запихать в вектор, чем пытаться понять атомики.
Обсуждают сегодня