我试图通过了解伟大的文章“ 了解风暴拓扑的并行性 ” 不过,我对“任务”的概念有点困惑。 任务是组件的运行实例(喷嘴或螺栓)? 实际上有多个任务的执行者是说执行者多次执行同一个组件,我是否正确? 此外,在一般的并行性意义上,Storm会产生一个专门的线程(执行器)来实现喷嘴或螺栓,但是执行器(线程)有多个任务对并行性有什么贡献? 我认为在一个线程中有多个任务,因为一个线程按顺序执行,只会使线程成为一种“caching”的资源,避免为下一个任务运行产生新的线程。 我对么? 在花费更多时间调查之后,我可以自己澄清那些困惑,但是你知道,我们都喜欢stackoverflow 😉 提前致谢。
在CLP(FD)中,我们经常需要陈述:“这是一个整数和有限域variables的列表(有时: 严格地说 )是升序/降序。 是否有任何CLP(FD)系统为此任务提供一个通用(可参数化)的内置约束? SWI-Prolog提供了一个叫做chain/2的约束,与我正在寻找的相似。 然而,这个名字稍微有些特殊,不能包含约束可以描述的所有关系(例如: #<不是一个偏序,但是在第二个chain/2是可以接受的,导致序列被看作是一个整数集合 -math顺序理论中定义的一个链)。 因此,这个名字并没有完全描述约束实际实现的内容。 请给出关于通常的二进制CLP(FD)约束的最一般的定义 – 或者至less包含#< , #> , #=<和#>= – 的合适的子集, 包括根据代数结构约束定义。 强加的条件是约束描述了一个在文献中有一个真正的名字的实际math结构。 首先,请考虑使用SICStus Prolog或SWI: :- use_module(library(clpfd)). connex(Relation_2, List) :- connex_relation(Relation_2), connex_(List, Relation_2). connex_relation(#=). connex_relation(#<). connex_relation(#=<). connex_relation(#>). connex_relation(#>=). connex_([], _). connex_([L|Ls], Relation_2) :- foldl(adjacent(Relation_2), Ls, L, _). adjacent(Relation_2, X, Prev, X) :- call(Relation_2, Prev, X). 示例: ?- connex(#<, […]