runtime: run init on main thread

Fixes #3125.

R=golang-dev, r, minux.ma
CC=golang-dev
https://golang.org/cl/5714049
This commit is contained in:
Russ Cox 2012-03-01 11:48:17 -05:00
parent 03769efe41
commit dc159fabff
3 changed files with 36 additions and 7 deletions

View file

@ -0,0 +1,29 @@
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package runtime_test
import (
. "runtime"
"syscall"
"testing"
)
var pid, tid int
func init() {
// Record pid and tid of init thread for use during test.
// The call to LockOSThread is just to exercise it;
// we can't test that it does anything.
// Instead we're testing that the conditions are good
// for how it is used in init (must be on main thread).
pid, tid = syscall.Getpid(), syscall.Gettid()
LockOSThread()
}
func TestLockOSThread(t *testing.T) {
if pid != tid {
t.Fatalf("pid=%d but tid=%d", pid, tid)
}
}