could multiple goroutines invoke bufio Read function at same time. I read the source code of bufio, and looks like it doesn't have proper method to protect buffer would only read by one goroutine.
No, reading from a buffer is not a thread safe operation. You have to manage coordination. Thing is, a read from the buffer modifies it's state there's not really any reasonable way to do it concurrently. There's a position marker that has to be moved at the end of the read so you can't begin a second read until the first completes.