Timing task manager based on red black tree in memory
last indicator may not be available on the cloud server,see more test code
# Example ## add a task that executes once ```golang var ( myClock = NewClock() jobFunc = func() { fmt.Println("schedule once") } ) //add a task that executes once,interval 100 millisecond myClock.AddJobWithInterval(time.Duration(100*time.Millisecond), jobFunc)
//wait a second,watching
time.Sleep(1 * time.Second)
//Output:
//
//schedule once
## add repeat task that executes three timesgolang
func ExampleClock_AddJobRepeat() {
var (
myClock = NewClock()
)
//define a repeat task
fn := func() {
fmt.Println("schedule repeat")
}
//add in clock,execute three times,interval 200 millisecond
_, inserted := myClock.AddJobRepeat(time.Duration(time.Millisecond200), 3, fn)
if !inserted {
log.Println("failure")
}
//wait a second,watching
time.Sleep(time.Second)
//Output:
//
//schedule repeat
//schedule repeat
//schedule repeat
}
## rm a task before its executiongolang
func ExampleClock_RmJob(){
var (
myClock = NewClock()
count int
jobFunc = func() {
count++
fmt.Println("do ",count)
}
)
//创建任务,间隔1秒,执行两次
job, _ := myClock.AddJobRepeat(time.Second1,2, jobFunc)
//任务执行前,撤销任务
time.Sleep(time.Millisecond*500)
job.Cancel()
//等待3秒,正常情况下,事件不会再执行
time.Sleep(3 * time.Second)
//Output:
//
//
} ``` ## more examples ### event notify ### TTL Session
$ claude mcp add clock \
-- python -m otcore.mcp_server <graph>