Skip to content

Commit 2037af6

Browse files
authored
Merge pull request #178 from elfenpiff/iox2-175-example-with-complex-data-types
[#175] Simplify example
2 parents 5560684 + 6c3093d commit 2037af6

File tree

2 files changed

+29
-32
lines changed

2 files changed

+29
-32
lines changed

examples/examples/complex_data_types/complex_data_types.rs

+7-6
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,20 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
5252
while let Iox2Event::Tick = Iox2::wait(CYCLE_TIME) {
5353
// acquire and send out sample
5454
let mut sample = publisher.loan()?;
55-
sample.payload_mut().plain_old_data = counter;
56-
sample.payload_mut().text = FixedSizeByteString::from_bytes(b"hello")?;
57-
sample.payload_mut().vec_of_data.push(counter);
58-
sample.payload_mut().vec_of_complex_data.push(ComplexData {
55+
let payload = sample.payload_mut();
56+
57+
payload.plain_old_data = counter;
58+
payload.text = FixedSizeByteString::from_bytes(b"hello")?;
59+
payload.vec_of_data.push(counter);
60+
payload.vec_of_complex_data.push(ComplexData {
5961
name: FixedSizeByteString::from_bytes(b"bla")?,
6062
data: {
6163
let mut v = FixedSizeVec::new();
6264
v.fill(counter);
6365
v
6466
},
6567
});
66-
sample
67-
.payload_mut()
68+
payload
6869
.a_queue_of_things
6970
.push(FixedSizeByteString::from_bytes(b"buh")?);
7071

iceoryx2-bb/posix/tests/condition_variable_tests.rs

+22-26
Original file line numberDiff line numberDiff line change
@@ -201,41 +201,37 @@ fn condition_variable_trigger_all_signals_all_waiters() {
201201

202202
#[test]
203203
fn condition_variable_trigger_one_signals_one_waiter() {
204+
const NUMBER_OF_THREADS: usize = 2;
205+
204206
let handle = MutexHandle::<ConditionVariableData<i32>>::new();
205-
thread::scope(|s| {
206-
let counter = Arc::new(AtomicI32::new(0));
207-
let sut = Arc::new(
208-
ConditionVariableBuilder::new()
209-
.create_condition_variable(500, |v| *v > 1000, &handle)
210-
.unwrap(),
211-
);
207+
let counter = AtomicI32::new(0);
208+
let sut = ConditionVariableBuilder::new()
209+
.create_condition_variable(500, |v| *v > 1000, &handle)
210+
.unwrap();
211+
let barrier = Barrier::new(3);
212212

213-
let sut_thread1 = Arc::clone(&sut);
214-
let counter_thread1 = Arc::clone(&counter);
215-
let t1 = s.spawn(move || {
216-
sut_thread1.wait().unwrap();
217-
counter_thread1.fetch_add(1, Ordering::Relaxed);
218-
});
213+
thread::scope(|s| {
214+
let mut threads = vec![];
215+
for _ in 0..NUMBER_OF_THREADS {
216+
threads.push(s.spawn(|| {
217+
barrier.wait();
219218

220-
let sut_thread2 = Arc::clone(&sut);
221-
let counter_thread2 = Arc::clone(&counter);
222-
let t2 = s.spawn(move || {
223-
sut_thread2.wait().unwrap();
224-
counter_thread2.fetch_add(1, Ordering::Relaxed);
225-
});
219+
sut.wait().unwrap();
220+
counter.fetch_add(1, Ordering::Relaxed);
221+
}));
222+
}
226223

224+
barrier.wait();
227225
thread::sleep(TIMEOUT);
228-
let counter_old_1 = counter.load(Ordering::Relaxed);
226+
assert_that!(counter.load(Ordering::Relaxed), eq 0);
229227
sut.trigger_one();
230-
thread::sleep(TIMEOUT);
231-
let counter_old_2 = counter.load(Ordering::Relaxed);
228+
assert_that!(|| counter.load(Ordering::Relaxed), block_until 1);
232229
sut.trigger_one();
233230

234-
t1.join().unwrap();
235-
t2.join().unwrap();
231+
for t in threads {
232+
t.join().unwrap();
233+
}
236234

237-
assert_that!(counter_old_1, eq 0);
238-
assert_that!(counter_old_2, eq 1);
239235
assert_that!(counter.load(Ordering::Relaxed), eq 2);
240236
});
241237
}

0 commit comments

Comments
 (0)