1libnbaio (for "Non-Blocking Audio I/O") was originally intended to 2be a purely non-blocking API. It has evolved to now include 3a few blocking implementations of the interface. 4 5Note: as used here, "short transfer count" means the return value for 6read() or write() that indicates the actual number of successfully 7transferred frames is less than the requested number of frames. 8 9Pipe 10---- 11supports 1 writer and N readers 12 13no mutexes, so safe to use between SCHED_NORMAL and SCHED_FIFO threads 14 15writes: 16 non-blocking 17 never return a short transfer count 18 overwrite data if not consumed quickly enough 19 20reads: 21 non-blocking 22 return a short transfer count if not enough data 23 will lose data if reader doesn't keep up 24 25MonoPipe 26-------- 27supports 1 writer and 1 reader 28 29no mutexes, so safe to use between SCHED_NORMAL and SCHED_FIFO threads 30 31write are optionally blocking: 32 if configured to block, then will wait until space available before returning 33 if configured to not block, then will return a short transfer count 34 and will never overwrite data 35 36reads: 37 non-blocking 38 return a short transfer count if not enough data 39 never lose data 40 41