25 lines
536 B
Go
25 lines
536 B
Go
|
package sentry
|
||
|
|
||
|
import (
|
||
|
"sync"
|
||
|
"syscall"
|
||
|
)
|
||
|
|
||
|
// This works around the ticker resolution on Windows being ~15ms by default.
|
||
|
// See https://github.com/golang/go/issues/44343
|
||
|
func setTimeTickerResolution() {
|
||
|
var winmmDLL = syscall.NewLazyDLL("winmm.dll")
|
||
|
if winmmDLL != nil {
|
||
|
var timeBeginPeriod = winmmDLL.NewProc("timeBeginPeriod")
|
||
|
if timeBeginPeriod != nil {
|
||
|
timeBeginPeriod.Call(uintptr(1))
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var setupTickerResolutionOnce sync.Once
|
||
|
|
||
|
func onProfilerStart() {
|
||
|
setupTickerResolutionOnce.Do(setTimeTickerResolution)
|
||
|
}
|