| // TARGET_BACKEND: NATIVE | |
| import kotlin.native.concurrent.* | |
| import kotlin.concurrent.* | |
| @OptIn(kotlin.ExperimentalStdlibApi::class) | |
| @Volatile var x = 0 | |
| var y = -1 | |
| fun box() : String { | |
| val w1 = Worker.start() | |
| val w2 = Worker.start() | |
| val f1 = w1.execute(TransferMode.SAFE, { -> }) { | |
| repeat(10000) { | |
| while (x != 0) {} | |
| y = it | |
| x = 1 | |
| } | |
| "O" | |
| } | |
| val f2 = w2.execute(TransferMode.SAFE, { -> }) { | |
| var result = "K" | |
| repeat(10000) { | |
| while (x != 1) {} | |
| if (y != it) result = "FAIL" | |
| x = 0 | |
| } | |
| result | |
| } | |
| return (f1.result + f2.result).also { | |
| w1.requestTermination().result | |
| w2.requestTermination().result | |
| } | |
| } |