• 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.