However from the learning side it doesn't really matter if you have to learn and apply synchronization in a 1:1 threaded or M:N threaded model. It's about the same.
The more important difference is what kind of synchronization primitives are provided to you by the platform. Go's (synchronous) channels in combination with select provide a quite powerful tool compared to using only pthreads. Even the old WinApi with WaitForMultipleObjects and that stuff will result in other ways or solving typical concurrency problems.
Comments
However from the learning side it doesn't really matter if you have to learn and apply synchronization in a 1:1 threaded or M:N threaded model. It's about the same.
The more important difference is what kind of synchronization primitives are provided to you by the platform. Go's (synchronous) channels in combination with select provide a quite powerful tool compared to using only pthreads. Even the old WinApi with WaitForMultipleObjects and that stuff will result in other ways or solving typical concurrency problems.