Thank you all for your response
Jake - thank you for clarification and yes you are correct. Application 
works like checksum validation server,client. Terminate is only useful if 
user triggered server to download a very large file but figured wrong 
setting present and i.e. does ctrl+c on client yet still it is matter of 
seconds. For the exact same reason I have postponed but I wanted to 
investigate if there is a way. I will give a shot this weekend for the 
io.Reader

Burak

On Friday, November 1, 2019 at 4:54:00 PM UTC+1, Jake Montgomery wrote:
>
> On Friday, November 1, 2019 at 10:30:50 AM UTC-4, Shulhan wrote:
>>
>>
>> On Fri, 1 Nov 2019, 21:07 burak sarac, <bura...@gmail.com> wrote:
>>
>>>  I have a go routine running something like 'hash.sum(data)' using import 
>>> "hash" that I want to terminate immediately in case of user wants to 
>>> kill, I can not send channel to notify. 
>>>
>>
>>
>> I have not tried this, but you can use a combination of defer, panic and 
>> recover to unroll the process.
>>
>> The recover function is inside calculate, and the for-loop is running in 
>> goroutine before calculate.
>>
>>    defer func() { recover() }
>>    go loop()
>>    calculate()
>>
>> Inside the loop() you will call panic("terminate").
>>
>> -- Shulhan
>>
>
> Shulhan - I think the point was that Burak does not have control over the 
> code for the function that we want to interrupt. So he has no ability to 
> insert a panic. 
>
> Burak - I do not believe there is a generic way to interrupt a function or 
> goroutine which does not take a Context, or have some other interruption 
> method baked in. I know the idea of being able to "kill" a goroutine has 
> been discussed before, and has generally gone nowhere. 
>
> It might be useful to have more details of the call, and to understand why 
> you need to interrupt this function. Assuming the hash.sum() you refer to 
> takes a []byte, then how long could it reasonably take? The best bet might 
> be to simply let it finish and ignore the result. Of course, if the 
> function is being sourced off an io.Reader(), or something like that, then 
> you might be able to interrupt the stream by wrapping the interface with 
> some of your own code.
>
>

-- 
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/6e941dc9-2cca-4050-ae6b-1a3066337a8a%40googlegroups.com.

Reply via email to