v2 / vlib / v / tests / concurrency / semaphore_test.v
23 lines · 20 sloc · 469 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1import sync
2
3const signals_per_thread = 100000
4
5fn send_signals(mut sem sync.Semaphore, mut sem_end sync.Semaphore) {
6 for _ in 0 .. signals_per_thread {
7 sem.post()
8 }
9 sem_end.post()
10}
11
12fn test_semaphores() {
13 mut sem := sync.new_semaphore()
14 mut sem_end := sync.new_semaphore()
15 spawn send_signals(mut sem, mut sem_end)
16 spawn send_signals(mut sem, mut sem_end)
17 for _ in 0 .. 2 * signals_per_thread {
18 sem.wait()
19 }
20 sem_end.wait()
21 sem_end.wait()
22 assert true
23}
24