flink内部线程模型设计?

rekjcdws  于 2021-06-26  发布在  Flink
关注(0)|答案(0)|浏览(222)

这是写在什么地方的吗?
在理解预期的设计上有一些困难。想了解我应该做的假设,关于何时调用某些函数(例如jdbcoupputformat open vs flush vs writerecord vs close),以及这些函数是否总是来自同一个线程或其他线程,或者它们是否可以并发调用,以便验证代码的正确性。
有什么保证?
某个引用是否需要一个volatile或者甚至一个同步。
穿线的设计是什么?
如果预期的设计没有被写下来,那么我们必须从代码中推断出来,我们可能会得出不同的结论,从而导致bug和漏洞。
写一个好的机器翻译代码是非常困难的,一个强大的设计对于提供代码框架是必要的。
这里有一些信息https://flink.apache.org/contributing/code-style-and-quality-common.html#concurrency-和线程,但这不是一个设计,也没有说它是如何工作的。

另一个例子。当我看到这样的代码。。。

FileOutputFormat

   public void close() throws IOException {
        final FSDataOutputStream s = this.stream;
        if (s != null) {
            this.stream = null;
            s.close();
        }
    }

我的感觉是有人也不确定什么是正确的方法。我只能猜测作者担心其他人会同时调用函数,或者用其他方法破坏类状态。如果这是真的,那么这段代码会不会是mt安全的-谁知道呢?是否应该有一个易失性或者一个普通的旧同步,或者可能根本不需要任何警告(框架保证防止这种需要)。
我在这个项目中看到很多类似的不确定和不一致的代码。
隐马尔可夫模型?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题