前戏:我打算写一个口令扫描器,其中有一个函数F(ip,[]token_list),要使用单个ip去遍历一个存放了口令的列表。这里我创建了一个chan和多个goroutine f(ip,token),每个f()从这个共享的chan里取出口令并进一步处理,只要其中一个f()找到一个合法的口令,就结束所有的f(),并让函数F()返回;否则就遍历完所有的口令。
问题是:多个goroutine应该使用一个什么信号量进行同步?
我的思路:1.如果使用全局变量,那么每个函数F都要有一个对应的全局变量,但是F本身也是以goroutinge的方式运行的。
2.如果用一个flag的局部变量,那么多个f()如何共享一个flag,因为golang的参数传递是值复制,我在f()内部修改了flag的值,其他f()不会接收到。
3.如果使用chan进行同步,多个goroutine之间该怎么共享,该怎么设计。
小弟不是专业的程序员,描述的不是很清楚,其中也可能有错误的认识,欢迎大家指出。感谢了!
问题是:多个goroutine应该使用一个什么信号量进行同步?
我的思路:1.如果使用全局变量,那么每个函数F都要有一个对应的全局变量,但是F本身也是以goroutinge的方式运行的。
2.如果用一个flag的局部变量,那么多个f()如何共享一个flag,因为golang的参数传递是值复制,我在f()内部修改了flag的值,其他f()不会接收到。
3.如果使用chan进行同步,多个goroutine之间该怎么共享,该怎么设计。
小弟不是专业的程序员,描述的不是很清楚,其中也可能有错误的认识,欢迎大家指出。感谢了!