mirror of
https://github.com/golang/go
synced 2024-11-06 22:26:11 -07:00
47 lines
755 B
Go
47 lines
755 B
Go
|
// Copyright 2015 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 main
|
||
|
|
||
|
import (
|
||
|
_ "p"
|
||
|
"syscall"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
import "C"
|
||
|
|
||
|
var initCh = make(chan int, 1)
|
||
|
var ranMain bool
|
||
|
|
||
|
func init() {
|
||
|
// emulate an exceedingly slow package initialization function
|
||
|
time.Sleep(100 * time.Millisecond)
|
||
|
initCh <- 42
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
ranMain = true
|
||
|
}
|
||
|
|
||
|
//export DidInitRun
|
||
|
func DidInitRun() bool {
|
||
|
select {
|
||
|
case x := <-initCh:
|
||
|
if x != 42 {
|
||
|
// Just in case initCh was not correctly made.
|
||
|
println("want init value of 42, got: ", x)
|
||
|
syscall.Exit(2)
|
||
|
}
|
||
|
return true
|
||
|
default:
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//export DidMainRun
|
||
|
func DidMainRun() bool {
|
||
|
return ranMain
|
||
|
}
|