[go] 我的程序中如何实现Golang多线程编程
[go] 我的程序中如何实现Golang多线程编程 今天想请大家帮忙看看这段代码。我想让应用程序实现多线程处理,该怎么做呢?以下是相关代码:
我定义了这样的结构体:
type Sre struct {
Name string `json:"Namesre"`
Url string `json:"Url"`
P_name string `json:"P_name"`
P_email string `json:"P_email"`
Other string `json:"Other_params"`
Create string `json:"Create"`
Base string `json:"Base"`
}
type Settings struct {
Sres []Sre
}
var settings Settings
假设现在有100个元素 settings.Sres[100]
在常规情况下,我会使用for循环逐个遍历所有元素。那么如何通过多线程来实现呢?
for i := 0; i < len(settings.Sres); i++ {
go Other(settings.Sres[I].Name,
settings.Sres[I].Url,
settings.Sres[I].P_name,
settings.Sres[I].P_email,
settings.Sres[I].Other,
settings.Sres[I].Create,
settings.Sres[I].Base)
}
func Other{param1 string, param2 string, param3 string, param4 string, param5 string, param6 string,param7 string
{
....
....
....
}
请问如何创建100个线程来同时处理所有元素(settings.Sres[100]),让Other函数在100个线程中并行执行?
更多关于[go] 我的程序中如何实现Golang多线程编程的实战教程也可以访问 https://www.itying.com/category-94-b0.html
是的,我同意,现在我正在研究如何使用 waitgroup 来实现这个功能,感谢您的回答
更多关于[go] 我的程序中如何实现Golang多线程编程的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
NobbZ:
如果你向
Other()传递一个Sre而不是分别传递它的每个字段,可能会更容易阅读。
谢谢,我同意,是的,我可以将整个结构体传递给函数,但我仍然不明白如何在不使用 for 循环的情况下实现多线程(我去读手册了=)
func main() {
fmt.Println("hello world")
}
在 Go 语言中,运行时管理的线程数量是有限的。这些线程将用于运行你的协程。
在我看来,你的代码似乎已经尽可能实现了并发。
你为每个元素启动一个协程,并同时处理它们。
编辑
不过,如果你向 Other() 传递一个 Sre 结构体,而不是分别传递它的每个字段,代码可能会更易读。
func main() {
fmt.Println("hello world")
}


