[Vm-dev] NativeBoost / Callbacks and Multithreading (Eliot: This is not just NB, we need you here :P)

Nicolai Hess nicolaihess at web.de
Sat Apr 18 16:24:19 UTC 2015


Thank you Esteban,

2015-04-18 9:36 GMT+02:00 Esteban Lorenzano <estebanlm at gmail.com>:

>
> Hi,
>
> So… “multithread” is a complicated issue. Pharo as most Smalltalks is
> designed thinking is as monolithic so if you are trying to make the image
> to work in different processes… it will not be easy at all :)
> Time ago Eliot did a prototype (more than a prototype in fact, but still
> far from “production ready”) to have Threaded FFI and I’m quite sure this
> is the way to go, at least as a 1st milestone.
>
> I already have a process building this experimental VM:
>
> https://ci.inria.fr/pharo/view/VM/job/CogMTVM/
>

But this one does not include NativeBoost support. Do we have a build with
MT and NB?


>
> (No idea why windows build failed last two times… this can be a random
> fail).
>
> I do not remember exactly the changes needed in the image to take
> advantage of it… it was just an instVar in Process, I think, but then FFI
> package was adapted to take advantage of this… no idea where it is now (if
> is already incorporated in latest FFI, which we have).
>
> Then, after this… I imagine the callback mechanism can be adapted to work
> in multithread environments but probably we will need something like
> isolates from Dart to provide some degree of multithread processing without
> killing the image (but I’m just thinking in loud here, this can be a really
> bad idea, and probably there are other ways to do this better… I will let
> Eliot to explain better).
>
> *TL;DR: *Start for the CogMTVM, is the way to go.
>
> cheers,
> Esteban
>
> On 17 Apr 2015, at 09:06, Nicolai Hess <nicolaihess at web.de> wrote:
>
> Hi,
>
> I've tried to build a pharovm with multithread support. I changed the
> config in the
> pharo generator.image to use the cogmt config and was able to build a vm.
> But this vm crashes on startup. (windows7)
>
> Is this the right way and did anyone got this to work (windows or linux)?
>
> And can this work to make NB callbacks working for multithreaded libraries.
>
> (I made some simple bindings for the gstreamer lib with NB, this works
> for simple calls (create element/change state). But I guess this won't work
> for any gstreamer function that requests a callback that may b e called
> from
> a different thread)
>
> Would this be the right way to do:
> - build a vm with MT support
> - guard the NB callback entry/leave code with the ownVM()/disownVM() call.
>
> Or is there more to do.
>
> Thanks in advance
>
>
> nicolai
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20150418/cee4c26e/attachment.htm


More information about the Vm-dev mailing list