package main
import (
"fmt"
"time"
)
//最大并发数
const MAX_PROCESS = 10
var ch = make(chan string, MAX_PROCESS)
func main() {
for i := 0; i < MAX_PROCESS; i++ {
//启动go runtine
go recive()
}
time.Sleep(1 * time.Hour)
close(ch)
}
func recive() {
for data := range ch {
DoSomething(data)
}
}
func DoSomething(data string) error {
defer dopanic()
fmt.Sprintf("doing %s...", data)
return nil
}
func dopanic() {
if r := recover(); r != nil {
fmt.Errorf("Error: %+v", r)
}
}
go利用channel控制并发数
最新推荐文章于 2024-08-13 15:35:46 发布
本文介绍了一个使用Go语言的并发编程示例,通过常量MAX_PROCESS限制最大并发数,创建goroutines来并行处理任务。`DoSomething`函数展示了基本的字符串操作,而`recover`函数用于处理可能的运行时错误。
摘要由CSDN通过智能技术生成