So you think you understand threads?

Felixweb is down again, due to 100% CPU use and continuous swapping.
I am guessing this is because of the way the GC is called: it's called
from a thread. If you look at the collect() routine you will see there's no
lock. This is deliberate: the locking is supposed to be handled by the world
stop routine (only .. I don't think it is called).

So here's the challenge: prove its a bug and fix it :)

The GC must be run in a single thread whilst nothing else is running,
that is, the collection process is not thread safe, so all other threads
have to be stopped before running it.

If the GC is called by allocator calls, this should work.
However if the GC is called by a "manual" call to collect()
I think it does not.

The collect() in the Felix library should call a routine
that does the same as allocate() does when it detects
a collection is required.

--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their 
applications. Written by three acclaimed leaders in the field, 
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to