After a channel is closed, any gets (<!) from the channel will return nil.
I think some part of your code is taking that nil return value and trying
to forward it on to a channel. That's what the error is about.

Timothy


On Wed, Jul 17, 2013 at 11:02 AM, Alan Shaw <noden...@gmail.com> wrote:

> The problem I am having is in the function at line 41 of
> https://github.com/nodename/async-plgd/blob/master/src/hoare/coroutines.clj.
> Any insight into this is appreciated.
>
> -A
>
>
>
> On Wed, Jul 17, 2013 at 7:23 AM, Timothy Baldridge 
> <tbaldri...@gmail.com>wrote:
>
>> True, but I'll mention the semantics of channels once again. Go blocks
>> are attached to channels, and channels exist on their own as values. No
>> where in this entire system is there some global list of channels or go
>> blocks (except for in the executors, but let's not get into that right
>> now).
>>
>> This means that entire chains of gos and channels can be reclaimed by the
>> GC if neither end of the chain is anchored in a GC root.
>>
>> Timothy
>>
>>
>> On Wed, Jul 17, 2013 at 8:17 AM, Laurent PETIT 
>> <laurent.pe...@gmail.com>wrote:
>>
>>> 2013/7/17 Timothy Baldridge <tbaldri...@gmail.com>:
>>> > It appears that you cannot call close! within a go block and so
>>> >>
>>> >> to signal the end of input to a channel you have to use another
>>> channel
>>> >> upon which the receiver can alt!.
>>> >>
>>> >
>>> > That's shouldn't be true. What problems did you run into with this?
>>>
>>> Silly suggestion : maybe the OP is trying to call close! on a channel
>>> which is unbuffered, after having put a value.
>>>
>>> I can imagine, then, that it is only when a consumer has taken the
>>> value out of the unbuffered channel, that the producer will be
>>> unblocked, and the call to close! will be executed.
>>>
>>> So maybe using a channel of size 1 may help make the symptom disappear ?
>>>
>>> >
>>> > And yes, channels and go's are automatically GC'd when they can no
>>> longer be
>>> > access by the system. So these channels/gos get GC'd as fast as they
>>> are
>>> > created.
>>> >
>>> > (loop []
>>> >   (let [c (chan)]
>>> >     (go (<! c))
>>> >     (recur)))
>>> >
>>> > Timothy
>>> >
>>> > --
>>> > --
>>> > You received this message because you are subscribed to the Google
>>> > Groups "Clojure" group.
>>> > To post to this group, send email to clojure@googlegroups.com
>>> > Note that posts from new members are moderated - please be patient
>>> with your
>>> > first post.
>>> > To unsubscribe from this group, send email to
>>> > clojure+unsubscr...@googlegroups.com
>>> > For more options, visit this group at
>>> > http://groups.google.com/group/clojure?hl=en
>>> > ---
>>> > You received this message because you are subscribed to the Google
>>> Groups
>>> > "Clojure" group.
>>> > To unsubscribe from this group and stop receiving emails from it, send
>>> an
>>> > email to clojure+unsubscr...@googlegroups.com.
>>> > For more options, visit https://groups.google.com/groups/opt_out.
>>> >
>>> >
>>>
>>> --
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to clojure+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>>
>>>
>>
>>
>> --
>> “One of the main causes of the fall of the Roman Empire was that–lacking
>> zero–they had no way to indicate successful termination of their C
>> programs.”
>> (Robert Firth)
>>
>> --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
“One of the main causes of the fall of the Roman Empire was that–lacking
zero–they had no way to indicate successful termination of their C
programs.”
(Robert Firth)

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to