Ok, I'll file a low priority feature request then and just make sure I manually turn it off.
On Sat, Dec 7, 2013 at 9:45 AM, Matthew Flatt <mfl...@cs.utah.edu> wrote: > You're right: the implementation has that kind of information (for > non-distributed channels), but it's significant work to add a trigger. > > At Fri, 6 Dec 2013 23:53:04 -0800, Eric Dobson wrote: >> Is there a way to determine if a place channel is unreachable? My >> experiments with will executors seem to show that they trigger even if >> the place channel is reachable from another place. Is there a way to >> determine that all other places don't have access to the value, I >> assume that it has to be possible because otherwise memory would leak, >> but maybe getting triggers based of of it would be hard. >> >> My goal is to have two places sharing a channel, and one stop sending >> messages across if the other one is provable not listening. I can make >> it so that it can turn it off manual, but I'm looking to see if I can >> get it to work if the listener just lets the channel get gc'd. >> >> >> Testing program: >> #lang racket/base >> >> (require racket/place) >> >> (define (holder) >> (place chan >> (let loop ([v #f]) >> (define v2 (sync chan)) >> (place-channel-put chan v) >> (collect-garbage) >> (loop v2)))) >> >> >> (module+ main >> (define other (holder)) >> (define exec (make-will-executor)) >> (define exec-thread >> (thread >> (lambda () >> (let loop () >> (will-execute exec) >> (loop))))) >> (define in >> (let-values ([(in out) (place-channel)]) >> (place-channel-put other out) >> (sync other) >> (will-register exec out >> (lambda (v) (printf "~a was deleted~n" v))) >> in)) >> (collect-garbage) >> ;; Let will execute >> (sleep 1)) >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users