A V-operation not performed atomically for each
data element or storage space that becomes available in a FIFO or a P-operation is not performed atomically for each request for a
data element or a storage space in the FIFO but rather one V-operation is performed after m data elements or m storage spaces have become available in the FIFO or one P-operation is performed after m requests for data elements or m requests for storage spaces have been received. Upon using these P-operations, i.e. performing said request operations in bursts rather than atomically, cases may occur where less data elements or storage spaces are available in said FIFO buffer than needed or requested by a
consumer process, e.g. a reading or a writing process. A P-operation is performed by requesting m data elements or m storage spaces for m data elements. The P-operation will only be blocked completely, if no data elements or storage spaces are available in the FIFO buffer, i.e. the
semaphore counter being zero. However, if there are data elements or storage spaces available in the FIFO buffer, i.e. the
semaphore counter is greater than zero, the value of the available data elements or storage spaces for data elements, i.e. the count of the
semaphore counter, and the value m of the P- request operation are compared and the minimum value of said two values is selected. If there are more data elements or storage spaces available in said FIFO buffer than requested by said P-operation, the value m of the requested data elements or storage spaces for data elements is selected as the actual available decrement of said semaphore counter. However, if there are less data elements or storage spaces available in said FIFO buffer than requested by said P-operation, the value of the available data elements or storage spaces for data elements is selected as the actual available decrement dec. The actual decrement dec of said semaphore counter is finally output.