> On 2 Dec 2017, at 09:50, Marko Rauhamaa <ma...@pacujo.net> wrote:
> 
> Guile guarantees the consistency of the data model under all
> circumstances. Bad synchronization between threads is allowed to cause
> unspecified behavior, but it should never trigger a SIGSEGV. In
> practice, that means excessive locking: all data access needs to take
> place in a critical section.

> These and other issues with multithreading have caused many of us to
> reject multithreading as a paradigm altogether. Use event-driven
> programming for multiplexing and multiprocessing for performance.

I see the the expected behavior when turing off the GC altogether, using malloc 
and free without cleanup: I third of the time on one thread, decreasing up to 
hardware concurrency.

The Boehm GC sets a lock around all allocations and collections [1], so it 
might be such excessive locking that slows it down. That pages seems old: I 
could not see a difference when choosing the options at [2].


1. http://www.hboehm.info/gc/scale.html
2. http://www.hboehm.info/gc/simple_example.html



Reply via email to