Clash.Meta/transport/anytls/util/routine.go

29 lines
402 B
Go

package util
import (
"context"
"runtime/debug"
"time"
"github.com/metacubex/mihomo/log"
)
func StartRoutine(ctx context.Context, d time.Duration, f func()) {
go func() {
defer func() {
if r := recover(); r != nil {
log.Errorln("[BUG] %v %s", r, string(debug.Stack()))
}
}()
for {
time.Sleep(d)
f()
select {
case <-ctx.Done():
return
default:
}
}
}()
}