mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
tests: remove duplicate test autolock_array_1_test.v
This commit is contained in:
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
Block a user