Golang 实现守护主进程

Golang 实现守护主进程,第1张

概述     package main import ( "fmt" "runtime" "sync" "time" ) func test_goroutine() { fmt.Println("函数被执行了***********
     package main        import (            "fmt"            "runtime"            "sync"            "time"        )        func test_goroutine()  {            fmt.Println("函数被执行了*************************")        }        func main()  {            // 测试多核并行化            // 在执一些昂贵的计算任务时,如果希望使用服务器的多核特性来尽量将任务实现并行化,从而达到降低总计算时间的目的            // 当前Golang版本并不能智能地发现和利用多核优势,如果不进行特殊声明,实际上所有的goroutine都运行在一个cpu核心上,// 当一个goroutine得到时间片执行的时候,其他goroutine都会处于等待状态.            // 在Golang升级到默认支持多个cpu之前,我们可以先通过设置环境变量GOMAXPROCS的值,或者在代码中启动goroutine之前            // 先调用相应的方法设置使用多少个cpu核心            // 获取cpu核心数            num_cpu := runtime.Numcpu()            // 设置使用的cpu的核心数            runtime.GOMAXPROCS(num_cpu)            // 使用sync包实现            var wg sync.WaitGroup            // 获取执行任务前的时间戳            start_time := time.Now().Unix()            for i:=0; i<=3200000; i++{                wg.Add(1) //添加WaitGroup计数器                go func() {                    defer wg.Done() //defer标记当前函数作用域执行结束后 释放一个计数器,必须有这一步 *** 作                    fmt.Println("函数被执行了*************************")                }()            }            wg.Wait() //阻塞,直到WaitGroup中的计数器为0            // 获取执行完成任务后的时间戳            end_time := time.Now().Unix()            fmt.Println(end_time-start_time)            // 测试发现当进行简单的计算时,使用多核心和使用单核心执行时间上并没有出现差距,资源的分配会出现时间损耗            // 简单的计算不建议使用多核cpu进行高并发,当进行昂贵复杂的计算最好经过充分的测试,使用合适的核心数进行并发执行任务        }
总结

以上是内存溢出为你收集整理的Golang 实现守护进程全部内容,希望文章能够帮你解决Golang 实现守护主进程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1269074.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存