我正在试验 Kotlin 协程。
说我有一个可变列表:
val list = mutableListOf<String>()
Run Code Online (Sandbox Code Playgroud)
我启动了 50 个这样的协程:
runBlocking {
for (i in 1..50) {
launch(Dispatchers.IO) {
delay(1000)
list.add(i.toString())
}
}
}
list.forEach { println(it) }
Run Code Online (Sandbox Code Playgroud)
显然,尽管存在“延迟(1000)”,但操作仍需要大约一秒钟,因为它们是异步运行的
这些是不会引起问题的简单操作,但是如果我同时写入很多大字符串,某些操作会失败吗?
如果使用 appendText 函数写入本地文件,某些操作是否会失败,因为文件可能被另一个写入操作锁定?
撰写版本:1.0.0-beta04.
约束布局-撰写版本:1.0.0-alpha05.
可组合:
@Composable
fun comp1() {
Surface(Modifier
.fillMaxWidth()
.height(50.dp), color = Color.Red) {
ConstraintLayout(Modifier.fillMaxSize()) {
val guide_line = createGuidelineFromAbsoluteRight(.2f)
val (icon_ref, box_ref, spacer_ref) = createRefs()
Icon(Icons.Filled.Search, null,
modifier = Modifier.constrainAs(icon_ref) {
absoluteLeft.linkTo(guide_line)
absoluteRight.linkTo(parent.absoluteRight)
top.linkTo(parent.top)
bottom.linkTo(parent.bottom)
}
)
Box(Modifier
.background(Color.Blue)
.fillMaxSize()
.constrainAs(box_ref) {
absoluteLeft.linkTo(parent.absoluteLeft)
absoluteRight.linkTo(guide_line)
top.linkTo(parent.top)
bottom.linkTo(parent.bottom)
}) {}
Spacer(Modifier
.background(Color.Yellow)
.width(2.dp)
.fillMaxHeight()
.constrainAs(spacer_ref) {
absoluteRight.linkTo(guide_line)
})
}
}
}
Run Code Online (Sandbox Code Playgroud)
预览:
正如您所看到的,这些项目并不像人们预期的那样受到限制。view_based 中的视图ConstraintLayout不会绘制到屏幕之外,除非约束被搞乱或者是故意的。