[Scilab-users] threading model in Scilab 6 (alpha)
jasper van baten
jasper at amsterchem.com
Thu Sep 3 16:51:03 CEST 2015
Hi François,
Is there a decision on the threading model yet?
Many thanks, best wishes,
Jasper.
On 8/5/2015 10:44, jasper van baten wrote:
> Hi François,
>
> Many thanks for your reply. As soon as you know more, I would be very
> pleased to test again in a new alpha. I would like to have my software
> back up-and-running before the actual release of Scilab 6. Before
> doing so I will have to decide how to handle the threading issue.
>
> If the solution will be that all is single threaded but in different
> threads, I suppose my best work-around would still be to synchronize
> access to the underlying objects over a private thread. I hope you
> will decide to keep the core thread alive and recycle it between
> calls, so that all calls are made on the same thread.
>
> If on the other hand your solution will be full multi-threaded
> execution, I would welcome that too. Also in this case I hope you will
> create a fixed number of threads and recycle them, for the same
> reason. In this case I can simply create a corresponding number of COM
> objects under the hood.
>
> I am not sure why events from outside the thread would have to make
> that you stop the thread and start another one (unless you forcefully
> terminate the thread, but I suppose you do not as this will surely
> lead to memory leaks and other trouble). You can simply set up your
> calculation thread to do something like
>
> void core_threadproc() {
>
> for (;;) {
> //wait until next command
> synchronizationObject.wait();
> //pick up next (set of) command(s) and execute
> if (nextCommand==CommandTerminate()) break;
> ...
>
> }
>
> }
>
> For interrupting calculations you could poll between individual
> commands and during length commands.
>
> On another note: removal of the intersci exe forced me to switch to
> the api-scilab (short of keeping previous builds of scilab around). I
> am pleased with this interface, it is a lot nicer than intersci. The
> C++ interface is nicer than the C interface, I think, but does not
> seem to have support for strings and some other data types (unless I
> missed something). So I am now mixing my approach: "csci" interfaces
> for all routines that take string matrices as in- our output, and
> "cppsci" interfaces for all routines that only deal with numeric
> matrices. Support for string (and other) data types from the cppsci
> interface would be welcome in the future.
>
> Best wishes,
>
> Jasper
>
>
>
> On 8/5/2015 10:21, François Granade wrote:
>> Hi Jasper,
>>
>> Looks like you have found an interesting question here...
>>
>> First - there are no multiple concurrent threads in the core. So we
>> are safe (and so is the API, without being thread-safe).
>>
>> However, what you saw is right: each command executes in a new
>> thread. We designed it on purpose, with one of the reason being that
>> this thread can be what we call the "storeCommand" which manages
>> events from outside the main thread (UI, interruption). Another idea
>> was that - later - to allow multithreaded execution (under some
>> serious constraints).
>>
>> Now, your point about COM loading, and thread-local storage, is very
>> valid, and may very well mean that we should change this.
>>
>> We will study if/how we could modify that... we'll keep you posted.
>>
>> Thanks *a lot* for reporting this; it's exactly what we released the
>> alpha for, and even though we were hoping we would not have such
>> questions, it's better to have them now than later...
>>
>> for the Scilab team,
>> François Granade
>>
>>
>>
>> On Aug 4, 2015, at 9:21 AM, jasper van baten <jasper at amsterchem.com>
>> wrote:
>>
>>> Does anybody know what threading model is used in Scilab 6 alpha? I
>>> am referring to the default mode of operation, and not while
>>> executing parallel_for, or MPI as described here
>>> (http://wiki.scilab.org/Documentation/ParallelComputingInScilab).
>>>
>>> If there are multiple core threads that execute concurrently, then
>>> all api-scilab code needs to be written in a thread-safe re-entrant
>>> safe manner. I doubt this is the case.
>>>
>>> If there is one core thread alive at any point, it would make sense
>>> for this to remain the same thread, which does not appear to be the
>>> case. If not the same thread, any application that depends on
>>> apartment threaded COM objects or thread local storage will no
>>> longer function as it did in Scilab 5. The solution may be to
>>> synchronize such applications over a private thread, but that surely
>>> will come at a performance cost.
>>>
>>> Having some idea about the threading model that is intended and used
>>> would be helpful.
>>>
>>> Best wishes,
>>>
>>> Jasper.
>>>
>>> On 7/31/2015 18:35, jasper van baten wrote:
>>>> All,
>>>>
>>>> What's the story with threading in Scilab 6? Whereas previous
>>>> versions appeared to be single threaded from an external DLL point
>>>> of view, I see that the DLLmain function gets called by a one
>>>> thread, whereas interface routines get called from another thread.
>>>> Worse, looks like each interface routine call is made from a new
>>>> thread. What is the threading model?? Is there a limited number of
>>>> threads, or are threads created on the fly?
>>>>
>>>> Thanks, best wishes,
>>>>
>>>> Jasper
>>>>
>>>>
>>>> _______________________________________________
>>>> users mailing list
>>>> users at lists.scilab.org
>>>> http://lists.scilab.org/mailman/listinfo/users
>>>
>>> _______________________________________________
>>> users mailing list
>>> users at lists.scilab.org <mailto:users at lists.scilab.org>
>>> http://lists.scilab.org/mailman/listinfo/users
>>
>>
>>
>> _______________________________________________
>> users mailing list
>> users at lists.scilab.org
>> http://lists.scilab.org/mailman/listinfo/users
>
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20150903/b0c37fed/attachment.htm>
More information about the users
mailing list