Files
kotlin/compiler/testData/codegen/controlStructures/sync.jet
2011-12-19 10:21:17 +02:00

33 lines
721 B
Plaintext

import java.util.concurrent.*
import java.util.concurrent.atomic.*
fun thread(block: fun():Unit ) {
val thread = object: Thread() {
override fun run() {
block()
}
}
thread.start()
}
fun box() : String {
val ref = AtomicInteger()
val cdl = CountDownLatch(11)
for(i in 0..10) {
thread {
var current = 0
do {
current = ref.synchronized {
val v = ref.get() + 1
if(v < 100)
ref.set(v+1)
v
}
}
while(current < 100)
cdl.countDown()
}
}
cdl.await()
return if(ref.get() == 100) "OK" else ref.get().toString()
}