GroovyCSP - Groovy 的 CSP 风格并发 API
import groovyx.gpars.csp.PAR import org.jcsp.lang.CSProcess import org.jcsp.lang.Channel import org.jcsp.lang.ChannelOutput import org.jcsp.lang.One2OneChannel import groovyx.gpars.csp.plugAndPlay.GPrefix import groovyx.gpars.csp.plugAndPlay.GPCopy import groovyx.gpars.csp.plugAndPlay.GPairs import groovyx.gpars.csp.plugAndPlay.GPrintclass FibonacciV2Process implements CSProcess {
ChannelOutput outChannel
void run() {
One2OneChannel a = Channel.createOne2One() One2OneChannel b = Channel.createOne2One() One2OneChannel c = Channel.createOne2One() One2OneChannel d = Channel.createOne2One()
def testList = [ new GPrefix(prefixValue: 0, inChannel: d.in(), outChannel: a.out()), new GPrefix(prefixValue: 1, inChannel: c.in(), outChannel: d.out()), new GPCopy(inChannel: a.in(), outChannel0: b.out(), outChannel1: outChannel), new GPairs(inChannel: b.in(), outChannel: c.out()), ] new PAR(testList).run() } }
One2OneChannel N2P = Channel.createOne2One()
def testList = [ new FibonacciV2Process(outChannel: N2P.out()), new GPrint(inChannel: N2P.in(), heading: "Fibonacci Numbers") ]
final def par = new PAR(testList) par.run()