The producer-consumer problem can be stated as follows: A shared data structure can be concurrently read by any number of tasks, but when a task must write to the data structure, it must have exclusive access. Think of a program that has the same nature as the producer-consumer problem, and use the language of your choice to illustrate the producer-consumer problem. Examples: a program to demonstrate the activities of a bank account; a store web site that manages the product information (updating the price of a product should be mutually exclusive); a program with an array that serves as a global variable where different processes will insert elements to it, etc. You can write your own codes to achieve the mutual exclusion or use the functions that come with the language. Your program must illustrate the concurrent access.