132: PR #121 plus regression test r=japaric a=japaric



Co-authored-by: konstantin <konstantin.kuznecov@gmx.de>
Co-authored-by: Jorge Aparicio <jorge@japaric.io>
This commit is contained in:
bors[bot] 2019-12-17 10:48:19 +00:00 committed by GitHub
commit c4db58c8cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -494,7 +494,11 @@ unsafe fn dequeue<T>(buffer: *mut Cell<T>, dequeue_pos: &AtomicU8, mask: u8) ->
} else if dif < 0 {
return None;
} else {
pos = dequeue_pos.load(Ordering::Relaxed);
if pos == 255 && dif == 255{
return None;
} else {
pos = dequeue_pos.load(Ordering::Relaxed);
}
}
}
@ -560,4 +564,15 @@ mod tests {
assert_eq!(q.dequeue(), Some(1));
assert_eq!(q.dequeue(), None);
}
#[test]
fn blocking(){
let q = Q2::new();
for _ in 0..255 {
q.enqueue(0).unwrap();
q.dequeue();
}
// this should not block forever
q.dequeue();
}
}