Some thread/GC questions

Juraj Variny juraj at blava.eu
Wed Mar 9 23:59:53 UTC 2016


>
> > On Wednesday 09 March 2016 09:07:38 you wrote:
> >> Hello,
> >>
> >> Juraj Variny writes:
> >> > Hello,
> >> >
> >> > can you please tell me how to:
> >> >
> >> > 1. Initialize lisp environment in a thread that was already created by
> >> > C/C++ app? Is it possible for it to share existing lisp environment?
> >>
> >> There is an example in examples/embed directory (file hello.c). What do
> >> you mean by sharing an existing lisp environment? cl_boot creates an
> >> environment for this instance.
> >
> > Say I have main thread, where cl_boot was called, with some lisp
> environment.
> > Then I call cl_boot in some other pre-existing thread, would it be able
> to
> > access lisp environment of the main thread, evaluate symbols defined
> there,
> > call functions etc? This is what I meant with shared environment.
>
> It is enought to call cl_boot once. Calling it a second time won't do
> any harm, but the cl_boot isn't thread-safe, so don't call it twice at
> the same time from different threads.
>
> After calling cl_boot once you should be able to work with lisp from any
> thread.


This "working with lisp from any thread"  I have tried, and got segfaults
and corruption immediately. Seems that ecl_env_ptr is thread-local variable
and should be properly initialized for every thread where lisp is used.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20160310/c747a74b/attachment.html>


More information about the ecl-devel mailing list