Implement a program to query and update the text database for a library using a client/server model allowing multiple clients safe access to the database, and using a producer-consumer model to control the inventory of each item.
The project will be graded according the criteria for the final project - see below.
Elaboration of the Client Class:
Multiple instances of a client class should be supported.
Use threads and locks to provide safe access to the database.
Add a field to each record in the database representing the maximum number of that book the library will hold. This number should be given a default value if the field is not present in the text file.
Functions should include:
Returning a book to the library, blocking if the maximum number of that book is reached until a book is borrowed.
Borrowing a book, blocking if the desired book is not in the library until a book is returned.
Allow a client to cancel a request that has been blocked.