On Saturday, September 29, 2018 at 2:08:03 PM UTC+2, Tamás Gulácsi wrote:
>
> Yes, but is that a one and only goroutine?
No. The cgo call is opened for every new incoming user request.
Let's summarize:
- Every network request creates a goroutine without response
processing result to a user of that goroutine.
- The goroutine instantly proceeds a cgo call and the cgo call
creates a non-Go thread, then a Pango call pango_font_map_get_default()
is involved in the non-Go thread.
- According to pango_font_map_get_default(), it holds a static thread-safe
variable.
- The original pure C code is able to proceed execution without involving
Go.
But stuck at the Pango call when involving cgo
- runtime.LockOSThread doesn't work:
go func() {
runtime.LockOSThread()
handleConnection(timeout)
runtime.UnlockOSThread()
}()
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.