The Mach ports which are widely used as a mechanism for IPC in XNU(, the kernel for OS X and iOS), act as endpoints of queue of messages.
Go Channel is well known to be modeled after C. A. R. Hoare's Communicating Sequential Processes. How about Mach ports? Regardless of the security and rights properties of ports and type safety of Go Channel, are they working in the same pattern in nature?
According to wikipedia a Mach port is:
a protected message queue for communication between tasks; tasks own send and receive rights to each port
Go implements some of the CSP concepts in its memory model. Mach port implementations could but don't have to, follow CSP.
A Mach port is a much higher level structure, managed by the OS kernel and communicating two separate memory spaces. Go channels (usually) communicate two goroutines.
Go channels can be buffered (effectively building a queue) but don't have to be, whereas Mach ports are always queues.
Go channels are typed, Mach ports don't care about the information being transmitted.
A Go channel cannot be used to communicate two separate processes, a Mach port can.