| 1 | import sync |
| 2 | |
| 3 | const signals_per_thread = 100000 |
| 4 | |
| 5 | fn 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 | |
| 12 | fn 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 | |