v2 / vlib / v / tests / concurrency / shared_lock_expr_assert_test.v
38 lines · 32 sloc · 372 bytes · 8ca3015c298a57fa245142118d5e98014ea2de0e
Raw
1struct Counter {
2mut:
3 value int
4}
5
6fn (shared c Counter) inc() {
7 lock c {
8 c.value += 1
9 }
10}
11
12fn (c Counter) val() int {
13 return c.value
14}
15
16fn test_main() {
17 shared c := Counter{1}
18
19 assert rlock c {
20 c.val()
21 } == 1
22 if rlock c {
23 c.val()
24 } == 1 {
25 assert true
26 }
27
28 c.inc()
29
30 assert rlock c {
31 c.val()
32 } == 2
33 if rlock c {
34 c.val()
35 } == 2 {
36 assert true
37 }
38}
39