On Wednesday, 21 July 2021 at 10:05:10 UTC+2 Brian Candler wrote:

> Channels are almost always better than low-level primitives like condition 
> variables, which have various pitfalls.


Almost always. :) Sure, there are alternatives, but sync.Cond makes sense 
once you use it properly. And it can be signalled multiple times. It's a 
really nice primitve, I think.
 

>
> This video by Bryan C Mills explains some of the issues, and shows 
> channel-based alternatives:
> https://www.youtube.com/watch?v=5zXAHh5tJqQ
>
> On Wednesday, 21 July 2021 at 07:04:27 UTC+1 skarl...@gmail.com wrote:
>
>> I think this is a perfect scenario for sync.Cond 
>> https://pkg.go.dev/sync#Cond.
>>
>> On Tuesday, 20 July 2021 at 21:21:27 UTC+2 prawira.d...@gmail.com wrote:
>>
>>> I personally like to use range channel to "break out" process in 
>>> goroutine, for example :
>>>
>>> package main
>>> import (
>>>     "fmt"
>>>     "sync"
>>> )
>>> func main() {
>>>     var wg sync.WaitGroup
>>>     c := make(chan bool)
>>>     wg.Add(1)
>>>     go func() {
>>>         defer wg.Done()
>>>         for b := range c {
>>>             fmt.Printf("Hello %t\n", b)
>>>         }
>>>     }()
>>>     c <- true
>>>     c <- true
>>>     close(c)
>>>     wg.Wait()
>>> }
>>>
>>> Dave Chenney has great post about this post : 
>>> http://dave.cheney.net/2013/04/30/curious-channels.
>>>
>>> Hope this helps
>>>
>>>
>>>
>>>
>>> On Wed, Jul 21, 2021 at 12:45 AM Brian Candler <b.ca...@pobox.com> 
>>> wrote:
>>>
>>>> Which goroutine panics: the one which got a successful login, or the 
>>>> other ones?
>>>>
>>>> If the goroutine which sees a successful login panics, then that's a 
>>>> problem with that particular goroutine, and you'll need to debug it in the 
>>>> normal way.  Reading the panic message carefully would be a good starting 
>>>> point.
>>>>
>>>> Note that you don't "break out" of a goroutine; you can break out of a 
>>>> loop.  You can terminate a goroutine simply by returning from the function 
>>>> that was invoked by "go <somefunc>"
>>>>
>>>> If you want to terminate the other goroutines, then the standard way to 
>>>> do that is to use a Context, and signal the context as "done".  If those 
>>>> goroutines are blocked on I/O, they should be modified so that they make 
>>>> use of the context too. There is a blog post here 
>>>> <https://blog.golang.org/context> you'll find useful.  But it seems to 
>>>> me this is a separate problem to the one of the original goroutine 
>>>> throwing 
>>>> a panic.
>>>>
>>>> On Tuesday, 20 July 2021 at 17:29:22 UTC+1 Tenjin wrote:
>>>>
>>>>> I am wanting to try and login to mutiple servers at once (bruteforce) 
>>>>> now I am spawning a new goroutine for each set of credentials. I want to 
>>>>> be 
>>>>> able to break out of my loop that I have once a successful login is met, 
>>>>> as 
>>>>> of right now the program just throws a panic and I am unsure of what I 
>>>>> can 
>>>>> do.
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "golang-nuts" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to golang-nuts...@googlegroups.com.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/golang-nuts/f1953fe9-0cef-4f24-bf72-804a078bcb7an%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/golang-nuts/f1953fe9-0cef-4f24-bf72-804a078bcb7an%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/2902c592-f9ec-4696-b5f6-3e1fe9d2d7a9n%40googlegroups.com.

Reply via email to