- Using Restarts:
- When is a restart used?
- Restarts are used when changes to one primitive affect other
primitives as well.
- The most common example is changing the frame size of a pipe
while the pipe is running.
- When the writer of a pipe needs to change one of the fundamental
attributes of the pipe it must use a restart since all of the
readers of that pipe are also affected.
- How do I know if a restart is needed?
- Only the primitive initiating the restart needs to be told
that a restart is needed.
- Any subsequent primitives reading a pipe that was written by
a primitive that is being restarted are automatically notified
that a restart is needed.
- Is there a way to alter the way a primitive handles a restart?
- Yes, this will be discussed in the next
few pages.
- Will any data be lost?
- No, data will not be lost during a pipe
restart, except where a primitive explicitly discards the data.
- Some primitives only work with a fixed transfer length and
may discard data when a restart lies in between two
transfer lengths.
- Is there a way to alter the way a primitive handles a restart?
- Yes, this will be discussed in the next
few pages.