Delays between parent and child

Peter Horan peter at cm.deakin.oz.au
Mon May 6 13:10:29 AEST 1991


I am using SCO Xenix 386 v2.3.2

I have opened pipes for communication between a parent and
child, forked the child, closed the unwanted ends of the pipes
in the parent and child and selected the O_NDELAY option on
the incoming pipes so that I can check for the presence of
data in a pipe without hanging so each end is not trapped in a
wait for IO state. At each end I want to be able to check for
input from other places.

To be a little more precise, the parent is in a loop doing:
	Poll keyboard; process if input
	Poll pipe from child; process if input

and the child is doing
	Poll Pipe A; process if input
	Poll Pipe B; process if input
or
	Input X; process
	Poll Pipe B; process if input

However, my problem is that things are slow. I need to
do further investigation, but it seems to me that there is a
very long cycle until my processes are rescheduled. (About 1 sec).
I have turned off the multi-screens, but nothing else yet.
Poth parent and child can be in what amounts to a busy wait,
so will not be rescheduled unless the read system calls do
this with O_NDELAY set. 

I suspect the parent uses up a time slice, then next time the
child gets scheduled and uses a time slice.

What is the cause of the slow operation?
Can I change the length of the time slice?
What causes the long cycle before my processes are rescheduled?
Does read with O_NDELAY cause rescheduling, or is it
effectively a busy wait?
Am I doing something wrong? 
What other ways can I poll devices as described without this
large delay?

Peter Horan
--
Peter Horan
peter at cm.deakin.oz.au



More information about the Comp.unix.xenix.sco mailing list