use Semaphore to manage max number of connections
allocate new buffer if no enough one in pool

while accepting newly incoming clients
pool also write buffers

and release CurrentWriteRequest when the buf is written completely