Más contenido relacionado La actualidad más candente (16) Similar a Groovyで学ぶプロセス代数 #jjug (20) Groovyで学ぶプロセス代数 #jjug2. Self Introduction
きょん kyon_mm
テストアーキテクト 2年目
TDD/BDD, SCM, Agile, Softwaretest,
SoftwareEngineering
なごや
基礎勉強会, SCMBC, Nagoya.Testing,
Cafe.Testing
15. plugAndPlay
classes
GConsole
GConsoleStr
ingToIntege
r
GDelta2
GFixedDelay
GIdentity
GIntegrate
GNumbers
GObjectToCo
nsoleString
GPairs
GParPrint
GPCopy
GPlus
GPrefix
GPrint
GSquares
GStatePairs
GSuccessor
GTail
16. class Executor implements CSProcess {
def out1
def out2
def random = new Random()
@Override
void run() {
while (true){
out1.write(random.nextInt() % 10)
out2.write(random.nextInt() % 10)
sleep(50L)
}
}
}
17. def channelA = Channel.one2one()
def channelB = Channel.one2one()
def channelC = Channel.one2one()
final def par = new PAR([
new Executor(out1: channelA.out(), out2:
channelB.out()),
new GPlus(inChannel0: channelA.in(),
inChannel1:channelB.in(), outChannel: channelC.out()),
new GPrint(inChannel: channelC.in(), heading: "足し算
しちゃうよ?")
])
par.run()
21. 例えばGPrintのなかみ↓
ChannelInput inChannel
String heading = "No Heading Provided"
long delay = 200
def void run() {
def timer = new CSTimer()
println "${heading}"
while (true) {
println inChannel.read().toString()
if (delay != 0) {
timer.sleep(delay)
24. class Formatter implements Callable<String> {
DataflowReadChannel rawNames
DataflowWriteChannel formattedNames
@Override
String call() {
while(!Thread.currentThread().isInterrupted()) {
String name = rawNames.val
formattedNames << name.toUpperCase()
}
}
}
25. class Greeter implements Callable<String> {
DataflowReadChannel names
DataflowWriteChannel greetings
@Override
String call() {
while(!Thread.currentThread().isInterrupted()) {
String name = names.val
greetings << "Hello " + name
}
}
}
26. def a = new SyncDataflowQueue()
def b = new SyncDataflowQueue()
def c = new SyncDataflowQueue()
!
group.task new Formatter(rawNames:a, formattedNames:b)
group.task new Greeter(names:b, greetings:c)
!
// 送信と受信をする
a << “Joe" // チャネルに送信
println c.val // 出力
…