Skip to content

Commit 942b991

Browse files
authored
Merge pull request #40 from orxfun/Use-of-Collection-constrained-PinnedVecs
Use-of-Collection-constrained-PinnedVecs
2 parents 40ba0f4 + 9c1d02c commit 942b991

File tree

5 files changed

+28
-25
lines changed

5 files changed

+28
-25
lines changed

Cargo.toml

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "orx-concurrent-vec"
3-
version = "3.2.0"
3+
version = "3.3.0"
44
edition = "2021"
55
authors = ["orxfun <[email protected]>"]
66
description = "A thread-safe, efficient and lock-free vector allowing concurrent grow, read and update operations."
@@ -11,22 +11,23 @@ categories = ["data-structures", "concurrency", "rust-patterns", "no-std"]
1111

1212
[dependencies]
1313
orx-pseudo-default = { version = "1.4", default-features = false }
14-
orx-pinned-vec = "3.11"
15-
orx-fixed-vec = "3.11"
16-
orx-split-vec = "3.11"
17-
orx-pinned-concurrent-col = "2.9"
14+
orx-pinned-vec = "3.12"
15+
orx-fixed-vec = "3.12"
16+
orx-split-vec = "3.12"
17+
orx-pinned-concurrent-col = "2.10"
1818
orx-concurrent-option = "1.3"
1919
serde = { version = "1.0.217", optional = true, default-features = false }
2020

2121
[dev-dependencies]
22-
append-only-vec = "0.1.5"
23-
boxcar = "0.2.5"
24-
clap = { version = "4.5.17", features = ["derive"] }
22+
append-only-vec = "0.1.7"
23+
boxcar = "0.2.8"
24+
clap = { version = "4.5.27", features = ["derive"] }
2525
criterion = "0.5.1"
26-
rand = "0.8"
27-
rand_chacha = "0.3"
28-
rayon = "1.9.0"
29-
serde_json = { version = "1.0.135", default-features = false, features = [
26+
orx-iterable = "1.1.1"
27+
rand = "0.9.0"
28+
rand_chacha = "0.9.0"
29+
rayon = "1.10.0"
30+
serde_json = { version = "1.0.138", default-features = false, features = [
3031
"std",
3132
] }
3233
test-case = "3.3.1"

examples/concurrent_grow_read_noupdate.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use clap::Parser;
22
use orx_concurrent_vec::*;
3+
use orx_iterable::*;
34
use rand::prelude::*;
45
use rand_chacha::ChaCha8Rng;
56

@@ -105,7 +106,7 @@ fn read(vec: &ConcurrentVec<String>, final_len: usize, lag: u64) {
105106
for _ in 0..1000 {
106107
std::thread::sleep(std::time::Duration::from_micros(lag));
107108

108-
let idx = rng.gen_range(0..slice.len());
109+
let idx = rng.random_range(0..slice.len());
109110

110111
// direct access to the reference
111112
// SAFETY: safe in this scenario since we know that no update on the element happens.

examples/concurrent_grow_read_update.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
use clap::Parser;
22
use orx_concurrent_vec::*;
3+
use orx_iterable::*;
34
use rand::prelude::*;
45
use rand_chacha::ChaCha8Rng;
56

67
/// Randomly draws an element from the `candidates.`
78
fn draw<'a, T>(r: &mut ChaCha8Rng, candidates: &'a [T]) -> &'a T {
8-
&candidates[r.gen_range(0..candidates.len())]
9+
&candidates[r.random_range(0..candidates.len())]
910
}
1011

1112
/// Note that [`vec.push(value)`] could also be used, which returns the position
@@ -87,7 +88,7 @@ fn read(vec: &ConcurrentVec<String>, final_len: usize, lag: u64) {
8788
for _ in 0..1000 {
8889
std::thread::sleep(std::time::Duration::from_micros(lag));
8990

90-
let idx = rng.gen_range(0..slice.len());
91+
let idx = rng.random_range(0..slice.len());
9192

9293
match draw(&mut rng, &READ_OPS) {
9394
Read::Map => {
@@ -168,7 +169,7 @@ fn update(vec: &ConcurrentVec<String>, final_len: usize, lag: u64) {
168169
for _ in 0..1000 {
169170
std::thread::sleep(std::time::Duration::from_micros(lag));
170171

171-
let idx = rng.gen_range(0..slice.len());
172+
let idx = rng.random_range(0..slice.len());
172173

173174
match draw(&mut rng, &UPDATE_OPS) {
174175
Update::Update => {

examples/random_actions.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ enum ConAction {
3030

3131
impl ConAction {
3232
fn new(r: &mut ChaCha8Rng, vec_len: usize) -> Self {
33-
let idx = |r: &mut ChaCha8Rng| r.gen_range(0..vec_len);
34-
let str = |r: &mut ChaCha8Rng| r.gen_range(0..1000).to_string();
33+
let idx = |r: &mut ChaCha8Rng| r.random_range(0..vec_len);
34+
let str = |r: &mut ChaCha8Rng| r.random_range(0..1000).to_string();
3535

3636
if vec_len == 0 {
37-
// to avoid gen_range panicking when vec_len = 0
37+
// to avoid random_range panicking when vec_len = 0
3838
return ConAction::Push(str(r));
3939
}
4040

41-
match r.gen_range(0..10) {
41+
match r.random_range(0..10) {
4242
0 => ConAction::Push(str(r)),
4343
1 => ConAction::Extend((0..64).map(|_| str(r)).collect()),
4444
2 => ConAction::Map(idx(r)),
@@ -49,7 +49,7 @@ impl ConAction {
4949
7 => ConAction::IterMapReduce,
5050
8 => {
5151
let i = idx(r);
52-
let j = r.gen_range(i..vec_len);
52+
let j = r.random_range(i..vec_len);
5353
ConAction::IterCloned(i..j)
5454
}
5555
9 => ConAction::IterMutate,

examples/updater_reader.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fn run_with_con_vec(len: usize, num_readers: usize, num_updaters: usize, duratio
2626

2727
let instant = Instant::now();
2828
while instant.elapsed().as_millis() < duration_seconds * 1000 {
29-
let i = r.gen_range(1..vec.len());
29+
let i = r.random_range(1..vec.len());
3030
vec[i].set((i as u64 + 1) % 1000);
3131
num_updates += 1;
3232
}
@@ -41,7 +41,7 @@ fn run_with_con_vec(len: usize, num_readers: usize, num_updaters: usize, duratio
4141
let len = vec.len();
4242
let instant = Instant::now();
4343
while instant.elapsed().as_millis() < duration_seconds * 1000 {
44-
let i = r.gen_range(1..len);
44+
let i = r.random_range(1..len);
4545
let value = vec.get_cloned(i).unwrap();
4646
assert!(value < len as u64);
4747

@@ -102,7 +102,7 @@ fn run_with_arc_mutex_vec(
102102

103103
let instant = Instant::now();
104104
while instant.elapsed().as_millis() < duration_seconds * 1000 {
105-
let i = r.gen_range(1..vec_len);
105+
let i = r.random_range(1..vec_len);
106106
vec.lock().unwrap()[i] = (i as u64 + 1) % 1000;
107107
num_updates += 1;
108108
}
@@ -116,7 +116,7 @@ fn run_with_arc_mutex_vec(
116116
let len = vec.lock().unwrap().len();
117117
let instant = Instant::now();
118118
while instant.elapsed().as_millis() < duration_seconds * 1000 {
119-
let i = r.gen_range(1..len);
119+
let i = r.random_range(1..len);
120120
let value = vec.lock().unwrap()[i];
121121
assert!(value < len as u64);
122122

0 commit comments

Comments
 (0)