Hi everyone,

I was always under the impression that Go solely uses async I/O under the 
hood so that when invoking a seemingly blocking call like os.File.Read the 
underlying thread won't be blocked. Go scheduler will save the context of 
current goroutine and schedule other goroutines to run on that thread. This 
understanding seems to be aligned with most material I can find on the 
internet.

However, recently when I was reading the slides 
(https://go.dev/talks/2012/waza.slide#32), on slide 32 I notice it says "*When 
a goroutine blocks, that thread blocks but no other goroutine blocks*". 
This is contradictory and make me wonder does Go really perform I/O in an 
asynchronous manner (e.g. like select/poll/epoll in Linux) under the hood?

Can somebody please clarify?

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/e1c49031-821c-42af-9449-2c7586c3676fn%40googlegroups.com.

Reply via email to