我在这里读Flink的例子https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/stream/state/state.html,并且无法找出同步块的存在点。
我在google上搜索了很多,从flink的文档中找不到有用的答案,因为每个并行都会有一个state示例,而且countersource的一个示例中的run方法不会从不同的线程调用,那么下面的代码有什么意义呢
val lock = ctx.getCheckpointLock
while (isRunning) {
// output and state update are atomic
lock.synchronized({
ctx.collect(offset)
offset += 1
})
}
1条答案
按热度按时间v8wbuo2f1#
检查点发生在另一个线程中。此锁的目的是防止源在检查点获取状态快照时修改其状态。