Data is written to a pipe through an API that commits a single word or packet (of data type contained in the pipe), and that word or packet is later returned by an API reading data from the pipe. The API accessing the pipe can be a blocking or non-blocking type. Blocking calls wait until there is available a capacity to commit data, or until data is available to be read. Non-blocking calls do not wait. They return with a status to indicate whether their operation is successful or not.