I have tree vi running in parallel, two of them are supplying data to the third one using a queue, I would like to know if I need to protect the queue access with a semaphore for the two vi supplying data ? or si this already implemented in the queue insert function ?
You don't. That's why you have "ms timeout(-1)" input on some of the VI's. Also take a look at "Get Queue Status.vi". You'll notice the outputs "#of ... pending.." which tell you the queue is busy and have those elements pending to be inserted/removed.
You do not need to protect the queue with a semaphore. All messages inserted into the queue will be inserted from wherever they come from... and All will be detected and pulled off.