Implement a thread-safe zero allocation queue with the following properties:
- It has a fixed maximum size set at initialization.
Push(val int) erroradds an item to the queue. If the queue is full, it should returnErrQueueFull.Pop() intremoves and returns first item from the queue. If the queue is empty, return -1.Peek() intreturns first item from the queue. If the queue is empty, return -1.- The queue must be safe to use from multiple goroutines simultaneously.
Concurrency