tests: remove duplicate test autolock_array_1_test.v
parent
6e6010d198
commit
a565848dfa
|
@ -1,52 +0,0 @@
|
||||||
import sync
|
|
||||||
import time
|
|
||||||
|
|
||||||
const (
|
|
||||||
iterations_per_thread = 100000
|
|
||||||
)
|
|
||||||
|
|
||||||
fn add_elements(shared foo []int, n int) {
|
|
||||||
for _ in 0 .. iterations_per_thread {
|
|
||||||
foo << n
|
|
||||||
}
|
|
||||||
// automatic lock is not yet implemented for this...
|
|
||||||
lock foo {
|
|
||||||
foo[0]++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn test_autolocked_array() {
|
|
||||||
shared abc := &[0]
|
|
||||||
go add_elements(shared abc, 1)
|
|
||||||
go add_elements(shared abc, 3)
|
|
||||||
for _ in 0 .. iterations_per_thread {
|
|
||||||
abc << 0
|
|
||||||
}
|
|
||||||
// wait for coroutines to finish - that should really be
|
|
||||||
// done by channels, yield, semaphore...
|
|
||||||
for {
|
|
||||||
mut finished_threads := 0
|
|
||||||
rlock abc {
|
|
||||||
finished_threads = abc[0]
|
|
||||||
}
|
|
||||||
if finished_threads == 2 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
time.sleep_ms(100)
|
|
||||||
}
|
|
||||||
// create histogram of results
|
|
||||||
mut result := [0, 0, 0, 0]
|
|
||||||
rlock abc {
|
|
||||||
// automatic rlock for iteration is also not implemented, yet
|
|
||||||
for v in abc {
|
|
||||||
if v > 3 {
|
|
||||||
panic('unexpected element on array')
|
|
||||||
}
|
|
||||||
result[v]++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
assert result[0] == iterations_per_thread
|
|
||||||
assert result[1] == iterations_per_thread
|
|
||||||
assert result[2] == 1 // number of non-main threads
|
|
||||||
assert result[3] == iterations_per_thread
|
|
||||||
}
|
|
Loading…
Reference in New Issue