Introduction - If you have any usage issues, please Google them yourself
1. Buffer pool of N buffers as a critical resource:
When the producer task reads data from the data source file, it will apply for a buffer and put the data in the buffer.
The consumer task takes data from a buffer and prints out the contents.
When a producer task is accessing the buffer, other producer and consumer tasks cannot access it.
When a consumer task is accessing the buffer, other producer and consumer tasks cannot access the buffer.
Mutex is used to access the buffer pool.