opencog-dev team mailing list archive
-
opencog-dev team
-
Mailing list archive
-
Message #00374
Re: Threading and GC in opencog
Linas,
But the truth values, attention values, etc. associated with an Atom are not
immutable ...
so for instance, a MindAgent could add a new Version within a
CompositeTruthValue
object associated with an Atom ...
ben
On Tue, Sep 30, 2008 at 12:11 PM, Linas Vepstas <linasvepstas@xxxxxxxxx>wrote:
> Work on threading in opencog is on-hold because it seems
> like a difficult problem. However, I was reading something recently,
> which makes me think that perhaps a change of mindset could
> convert this difficult problem into an "easy" one, by changing certain
> core assumptions.
>
> I was reading about Clojure
> http://wiki.jvmlangsummit.com/pdf/27_Hickey_clojure.pdf
>
> which is a LISP implementation on top of the JVM. One of the things
> that Hickey talks about is multi-threading, and how "easy" it is, because
> of a core design assumption he made: expressions would be immutable.
>
> This rang a bell: the hypergraphs in opencog are currently "immutable",
> in the sense that, once I create something like
>
> SomeLink
> SomeAtom "asdf"
> OtherAtom "pqrs"
>
> I can not change the string values "asf" or "pqrs", I cannot add more
> atoms to the link, I cannot remove the existing atoms from the link,
> I cannot delete these atoms from the link, unless I also delete the link
> first. So at least one key concept from clojure already exists in
> opencog: immutablity.
>
> The key element that seems to be missing from opencog is
> garbage collection. That is, although the incoming set for
> "SomeAtom" will reveal that "SomeLink" is pointing at it, we
> don't know who is pointing at SomeLink. Thus, there is no safe
> way of deleting "SomeLink" if there is more than one "MindAgent"
> (forget threads -- even when single threaded, if one MindAgent
> is holding a pointer to SomeLink, its unsafe to delete it).
>
> If garbage collection was added, I think the multi-threading issues
> just might go away (I haven't pondered deeply on this, though).
>
> I'm also thinking that adding something conservative, like the
> Boehm garbage collector, might be pretty easy, almost trivially
> so, as it might not require any big tear-up of the code ... or even
> a small tear-up. The only interesting pieces would be to integrate
> it properly with the ForgettingAgent, and &etc. -- and I guess with
> the TLB and handles, since these act as pseudo-pointers.
>
> Anyone care to ponder this in greater detail?
>
> --linas
>
> _______________________________________________
> Mailing list: https://launchpad.net/~opencog-dev<https://launchpad.net/%7Eopencog-dev>
> Post to : opencog-dev@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~opencog-dev<https://launchpad.net/%7Eopencog-dev>
> More help : https://help.launchpad.net/ListHelp
>
--
Ben Goertzel, PhD
CEO, Novamente LLC and Biomind LLC
Director of Research, SIAI
ben@xxxxxxxxxxxx
"Nothing will ever be attempted if all possible objections must be first
overcome " - Dr Samuel Johnson
Follow ups
References