A system consists of one producer thread and M consumer threads. They
interact with the usual CircularArray data structure, as described
below:

class CircularArray {
  ...
public:
  CircularArray(int size);
 
  void insert(int elem);
  void extract(int &elem);
};

The size parameters denotes the size of the internal queue.

Every data inserted by a producer must be received by ALL consumers.

Implement the data structure and a test program.

