I want to run the main goroutine on another thread besides the main thread,
so that the main thread can block in darwin UI code. Is this a safe way to
do it?
package main
/*
#include <pthread.h>
#include <stdio.h>
void block() {
printf("Blocking main thread? %d\n", pthread_main_np());
while(1);
}
*/
import "C"
import (
"fmt"
"runtime"
)
func init() {
runtime.LockOSThread()
go main()
C.block()
}
func main() {
fmt.Println("Blocking main goroutine?", C.pthread_main_np())
}
This prints out the following:
$ go run threadtrick.go
Blocking main thread? 1
Blocking main goroutine? 0
--
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].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/6b476ab1-c6b6-4f77-91d8-aba2dfbcc314%40googlegroups.com.