当前位置: 首页 > news >正文

wordpress 防站教程营销网页设计

wordpress 防站教程,营销网页设计,学做效果图需要多久,哪学网页设计goroutine的数量上限是1048575吗#xff1f; 正常项目#xff0c;协程数量超过十万就需要引起重视。如果有上百万goroutine#xff0c;一般是有问题的。 但并不是说协程数量的上限是100多w 1048575的来自类似如下的demo代码: package mainimport ( fmt ma… goroutine的数量上限是1048575吗 正常项目协程数量超过十万就需要引起重视。如果有上百万goroutine一般是有问题的。 但并不是说协程数量的上限是100多w 1048575的来自类似如下的demo代码: package mainimport ( fmt math runtime time)// https://zhuanlan.zhihu.com/p/568151296func main() { maxCount : math.MaxInt64 for i : 0; i  maxCount; i {  go func(i int) {   fmt.Printf(i is: %d,goroutine num: %d\n, i, runtime.NumGoroutine())   // 模拟各种耗时较长的业务逻辑   time.Sleep(10 * time.Second)  }(i) }} 执行后很快报错 panic: too many concurrent operations on a single file or socket (max 1048575) 但这个是因为fmt.Printf导致的: 对单个file/socket的并发操作数超过了系统上限这个是标准输出造成的具体一点就是文件句柄数量达到限制 如下例子去掉fmt: package mainimport ( fmt math runtime time)func main() { maxCount : math.MaxInt64 for i : 0; i  maxCount; i {  go func(i int) {   // 模拟各种耗时较长的业务逻辑   //time.Sleep(10 * time.Hour)   time.Sleep(15 * time.Second)   if i  1300_0000 {    //if runtime.NumGoroutine()  1000_0000 {    fmt.Println(当前协程数:, runtime.NumGoroutine())   }  }(i) }} 实际同一时间可以出现1000w的goroutine可见goroutine的理论上限绝对不止100w 或者如下: package mainimport ( fmt math runtime time)func main() { maxCount : math.MaxInt64 for i : 0; i  maxCount; i {  go func(i int) {   // 模拟各种耗时较长的业务逻辑   //time.Sleep(10 * time.Hour)   time.Sleep(15 * time.Second)   //if i  1300_0000 {   if runtime.NumGoroutine()  800_0000 {    fmt.Println(当前协程数:, runtime.NumGoroutine())   }  }(i) }} panic: too many concurrent operations on a single file or socket (max 1048575)goroutine 1231546 [running]:internal/poll.(*fdMutex).rwlock(0x140000a2060, 0x20?)        /Users/fliter/.g/go/src/internal/poll/fd_mutex.go:147 0x134internal/poll.(*FD).writeLock(...)        /Users/fliter/.g/go/src/internal/poll/fd_mutex.go:239internal/poll.(*FD).Write(0x140000a2060, {0x14635532bc0, 0x19, 0x20})        /Users/fliter/.g/go/src/internal/poll/fd_unix.go:370 0x48os.(*File).write(...)        /Users/fliter/.g/go/src/os/file_posix.go:48os.(*File).Write(0x140000a0008, {0x14635532bc0?, 0x19, 0x10412e25c?})        /Users/fliter/.g/go/src/os/file.go:175 0x60fmt.Fprintln({0x104168cf8, 0x140000a0008}, {0x140bde92f88, 0x2, 0x2})        /Users/fliter/.g/go/src/fmt/print.go:285 0x74fmt.Println(...)        /Users/fliter/.g/go/src/fmt/print.go:294main.main.func1(0x0?)        /Users/fliter/go/src/shuang/0000/goNum.go:20 0x150created by main.main        /Users/fliter/go/src/shuang/0000/goNum.go:14 0x54exit status 2 比较奇怪的是如果将模拟各种耗时较长的业务逻辑的time.Sleep(15 * time.Second)改为time.Sleep(10 * time.Hour)最终会因为内存过高而signal: killed。但此时goroutine数量不够多触发不了if里面的fmt逻辑故而不会出现panic: too many concurrent operations on a single file or socket (max 1048575) 而休眠10几s的代码内存到不了这么大就已经因为fmt的问题panic了 控制方式 使用有缓冲的channel限制并发的协程数量 make(chan struct{}, 300) 创建缓冲区大小为 300 的 channel在没有被接收的情况下至多发送 300 个消息则被阻塞。 开启协程前调用 ch - struct{}{}若缓存区满则阻塞。 协程任务结束调用 -ch 释放缓冲区。 // 通过channel来控制并发数package mainimport ( fmt math runtime time)func main() { ch : make(chan struct{}, 300) maxCount : math.MaxInt64 for i : 0; i  maxCount; i {  ch - struct{}{}  go func(i int) {   //fmt.Printf(i is: %d,go func num: %d\n, i, runtime.NumGoroutine())   // 模拟各种耗时较长的业务逻辑   //time.Sleep(10 * time.Hour)   time.Sleep(15 * time.Second)   //if i  1000_0000 {   //if runtime.NumGoroutine()  1000_0000 {   fmt.Println(当前协程数:, runtime.NumGoroutine())   //}   //读取channel数据   -ch  }(i) }} 当前协程数: 301当前协程数: 301当前协程数: 301当前协程数: 301当前协程数: 301当前协程数: 301当前协程数: 301当前协程数: 301当前协程数: 301... 同时只有301个协程(每15s处理301个限制太少会大大增加程序执行完成需要的时间具体限制多少需要权衡太大太小可能都有问题) 更多参考: 如何控制golang协程的并发数量问题[1] golang实现并发数控制的方法[2] golang控制并发数[3] Golang的并发控制[4] 即所谓的 无缓冲的channel可以当成阻塞锁来使用 Go用两个协程交替打印100以内的奇偶数 有缓冲的channel通常可以用来控制goroutine的数量 来控制一下 goroutine 的并发数量[5] 还有通过协程池信号量等方式可参考 【警惕】请勿滥用goroutine[6] aceld-Go是否可以无限go如何限定数量[7] 参考资料 [1] 如何控制golang协程的并发数量问题: http://www.manongjc.com/detail/62-ixfkirkdenvuohr.html [2] golang实现并发数控制的方法: http://www.qb5200.com/article/327027.html [3] golang控制并发数: https://blog.csdn.net/weixin_38155824/article/details/128240704 [4] Golang的并发控制: https://blog.csdn.net/LINZEYU666/article/details/123020597 [5] 来控制一下 goroutine 的并发数量: https://eddycjy.gitbook.io/golang/di-1-ke-za-tan/control-goroutine [6] 【警惕】请勿滥用goroutine: https://juejin.cn/post/6999807716482875422#heading-5 [7] aceld-Go是否可以无限go如何限定数量: https://github.com/catandcoder/golang/blob/main/4%E3%80%81Go%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E6%97%A0%E9%99%90go%EF%BC%9F%E5%A6%82%E4%BD%95%E9%99%90%E5%AE%9A%E6%95%B0%E9%87%8F%EF%BC%9F.md 本文由 mdnice 多平台发布
http://www.dnsts.com.cn/news/97529.html

相关文章:

  • 网站flash代码标志设计名词解释
  • lamp网站开发制作wordpress画廊
  • 内容电商网站有哪些温州网站建设设计
  • 昆明学院网站建设与维护试题微信公众号如何创建
  • 佛山网站定制wordpress做过的大型网站
  • 湖北建设部网站传奇网页游戏下载
  • 惠州做网站开发网站如何设置404页面
  • 商务网站开发的工作任务重庆网站制作系统
  • 条件查询 php网站源码域名注册局是国家单位吗
  • 网站优化网络公司青岛正规公司网站建设公司
  • 网站开发的阶段流程图清远市清城区发布
  • 做游戏奖金不被发现网站上海网站建设助君网络7
  • 郑州网站建设找哪家wordpress异次元主题
  • 网站导航仿站wordpress目录介绍
  • 如何做网站教程浮动微信代码wordpress
  • 长沙哪家网站公司专业网站建设公司推荐
  • 湖北长城建设实业有限公司网站做lt行业的人让我登网站
  • 秦皇岛网站关键词网站建设技术网站
  • 哪里有网站建设加盟合作搞定设计在线制作
  • 电子商务网站建设项目的阶段免费发群二维码的网站
  • 凡科做网站怎么样wordpress单屏模板
  • 建行门户网站建设银行银监会官方网站
  • 了解c2c电商网站的特点太原市给企业做网站
  • 网站备案ip贵州软件开发 网站开发
  • 南宁网站建设优化排名网站备案查询工信部官网
  • 门户网站建设 工具公司官网建设优帮云
  • 广州做网站多少钱站长素材网
  • 网站优化18600119496语音定制软件
  • 公众号链接的手机网站怎么做的河南省建设工程质量安全监督网站
  • 建网站建网站微信小程序开发教程从零开始