On 29/08/2013 12:13 AM, Paul Gilmartin wrote:
On Tue, 27 Aug 2013 19:48:25 -0400, Blaicher, Christopher Y. wrote:
There are lots of ways to do this. Some of the questions you have to first ask
are: 1) Are the tasks asynchronous to each other? 2) Can there be more than one
slave task? 3) What are you attempting to accomplish with sub tasks?
Can POSIX pipes be used to communicate among tasks/subtasks?
The important question is, if one task blocks on a read, does the
whole job block?
POSIX message queues would be a better fit. Call *BPX1QGT*(msgget) with
IPC_PRIVATE to create a private message queue for inter task
communication (not IPC). You can use PLO for serialization with the
IPC_PLO/IPC_PLO2 flags.
All the blocking is done for you and they scale ok. My testcase can
process around 200,000 16k recs per sec on a 2 engine z114. Of course,
POSIX shared memory with semaphores would scale better because you don't
have to
move data around.
(I've used pipes to implement some crude dispatching in shell.
These were named pipes because shell doesn't provide adequate
pipe primitives. C, Rexx, and Assembler do better.)
-- gil
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN