写出以下逻辑,要求每秒钟调用一次proc并保证程序不退出
package main
func main() {
go func() {
// 1 在这里需要你写算法
// 2 要求每秒钟调用一次proc函数
// 3 要求程序不能退出
}()
select {}
}
func proc() {
panic("ok")
}
请自行编码,完成算法。答案在文末
,
,
,
,
,
,
,
,
,
,
func main() {
go func() {
// 1 在这里需要你写算法
// 2 要求每秒钟调用一次proc函数
// 3 要求程序不能退出
for {
t := time.NewTicker(time.Second)
select {
case <-t.C:
go func() {
defer func() {
if r := recover(); r != nil {
fmt.Printf("%s\n", r)
}
}()
proc()
}()
}
}
}()
select {}
}
以下实现有什么问题:
func main() {
go func() {
// 1 在这里需要你写算法
// 2 要求每秒钟调用一次proc函数
// 3 要求程序不能退出
defer func() {
if r := recover(); r != nil {
fmt.Printf("%s\n", r)
}
main()
}()
for {
t := time.NewTicker(time.Second)
select {
case <-t.C:
proc()
}
}
}()
select {}
}
栈空间会越来越大,知道栈溢出,程序崩溃
为了验证,我们去掉定时器
func main() {
go func() {
// 1 在这里需要你写算法
// 2 要求每秒钟调用一次proc函数
// 3 要求程序不能退出
defer func() {
if r := recover(); r != nil {
// fmt.Printf("%s\n", r)
}
main()
}()
proc()
}()
select {}
}
运行程序,观察进程占用的内存空间,会越来越大,不到几秒钟,程序被系统杀死
$ ./solution26
已杀死
本文探讨如何使用Go语言实现在主函数中每秒钟稳定调用proc函数,并确保程序不会意外退出。通过实现一个无限循环和定时器来实现周期性任务执行,同时关注内存使用和异常处理。
1800

被折叠的 条评论
为什么被折叠?



