45 lines
1.2 KiB
Factor
45 lines
1.2 KiB
Factor
! Copyright (C) 2012 Eungju PARK.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: byte-arrays calendar destructors formatting io kernel
|
|
math namespaces random threads zeromq zeromq.ffi ;
|
|
IN: zeromq.examples.taskvent
|
|
|
|
: taskvent ( -- )
|
|
[
|
|
<zmq-context> &dispose
|
|
|
|
[
|
|
! Socket to send messages on
|
|
ZMQ_PUSH <zmq-socket> &dispose
|
|
dup "tcp://*:5557" zmq-bind
|
|
] [
|
|
! Socket to send start of batch message on
|
|
ZMQ_PUSH <zmq-socket> &dispose
|
|
dup "tcp://localhost:5558" zmq-connect
|
|
] bi
|
|
|
|
"Press Enter when the workers are ready: " write flush
|
|
read1 drop
|
|
"Sending tasks to workers…\n" write flush
|
|
|
|
! The first message is "0" and signals start of batch
|
|
dup "0" >byte-array 0 zmq-send
|
|
|
|
! Send 100 tasks
|
|
0 100 [
|
|
! Random workload from 1 to 100msecs
|
|
100 random 1 +
|
|
dup [ + ] dip
|
|
[ pick ] dip "%d" sprintf >byte-array 0 zmq-send
|
|
] times
|
|
"Total expected cost: %d msec\n" printf
|
|
|
|
! Give 0MQ time to deliver
|
|
1 seconds sleep
|
|
|
|
drop
|
|
drop
|
|
] with-destructors ;
|
|
|
|
MAIN: taskvent
|