<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=windows-1252">
    <style type="text/css">
        /* Quote Levels Colors */
        blockquote.cite {    color: navy !important; background-color: RGB(245,245,245) !important;
        }
        blockquote.cite blockquote.cite {    color: maroon !important; background-color: RGB(235,235,235) !important;
        }
        blockquote.cite blockquote.cite blockquote.cite {    color: green !important; background-color: RGB(225,225,225) !important;
        }
        blockquote.cite blockquote.cite blockquote.cite blockquote.cite {    color: purple !important; background-color: RGB(215,215,215) !important;
        }
        blockquote.cite blockquote.cite blockquote.cite blockquote.cite blockquote.cite {    color: teal !important; background-color: RGB(205,205,205) !important;
        } 
</style>
  </head>
  <body>
    Hi François, <br>
    <br>
    Perfect - yes that would work great for me. Is there an update on
    the alpha available that has this change?<br>
    <br>
    Strings: nice. I am impressed with the API interface.<br>
    <br>
    Best wishes, <br>
    <br>
    Jasper.<br>
    <br>
    <div class="moz-cite-prefix">On 9/8/2015 19:49, François Granade
      wrote:<br>
    </div>
    <blockquote class=" cite"
      id="mid_5B6E037D_7B43_4684_BEB1_32A3D18A66C3_scilab_enterprises_com"
cite="mid:5B6E037D-7B43-4684-BEB1-32A3D18A66C3@scilab-enterprises.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      hi Jasper,
      <div><br>
      </div>
      <div>Yes, we made a decision - and in fact we implemented it
        already: and we changed it to be simply always use the same
        thread. That should work for you, right ?</div>
      <div><br>
      </div>
      <div>Regarding your other question (api scilab): I believe that
        there is string support for cpp (we implemented it), however
        this is still in development, and may still change before the
        release... </div>
      <div><br>
      </div>
      <div>François Granade</div>
      <div><br>
      </div>
      <div><br>
        <div>
          <div>
            <div>On Sep 3, 2015, at 4:51 PM, jasper van baten <<a
                moz-do-not-send="true"
                href="mailto:jasper@amsterchem.com"><a class="moz-txt-link-abbreviated" href="mailto:jasper@amsterchem.com">jasper@amsterchem.com</a></a>>
              wrote:</div>
            <br class="Apple-interchange-newline">
            <blockquote class=" cite" id="Cite_6244667" type="cite">
              <div style="font-family: Helvetica; font-size: 12px;
                font-style: normal; font-variant: normal; font-weight:
                normal; letter-spacing: normal; line-height: normal;
                orphans: auto; text-align: start; text-indent: 0px;
                text-transform: none; white-space: normal; widows: auto;
                word-spacing: 0px; -webkit-text-stroke-width: 0px;">Hi
                François,<br>
                <br>
                Is there a decision on the threading model yet?<br>
                <br>
                Many thanks, best wishes,<span
                  class="Apple-converted-space"> </span><br>
                <br>
                Jasper.<br>
                <br>
                <div class="moz-cite-prefix">On 8/5/2015 10:44, jasper
                  van baten wrote:<br>
                </div>
                <blockquote class=" cite"
                  id="mid_55C1CD01_8070304_amsterchem_com"
                  cite="mid:55C1CD01.8070304@amsterchem.com" type="cite"
                  style="color: navy !important; background-color:
                  rgb(245, 245, 245) !important;">Hi François,<br>
                  <br>
                  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.<br>
                  <br>
                  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.<br>
                  <br>
                  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.<br>
                  <br>
                  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<br>
                  <br>
                  <tt>void core_threadproc() {</tt><br>
                  <br>
                  <tt> for (;;) {</tt><tt><br>
                  </tt><tt>   <span class="Apple-converted-space"> </span>//wait
                    until next command</tt><tt><br>
                  </tt><tt>   <span class="Apple-converted-space"> </span>synchronizationObject.wait();</tt><tt><br>
                  </tt><tt>   <span class="Apple-converted-space"> </span>//pick
                    up next (set of) command(s) and execute</tt><tt><br>
                  </tt><tt>   <span class="Apple-converted-space"> </span>if
                    (nextCommand==CommandTerminate()) break;</tt><tt><br>
                       <span class="Apple-converted-space"> </span>...<br>
                  </tt><tt>   <span class="Apple-converted-space"> </span></tt><tt><br>
                  </tt><tt> <span class="Apple-converted-space"> </span>}</tt><tt><br>
                  </tt><tt><br>
                  </tt><tt>}<br>
                    <br>
                  </tt>For interrupting calculations you could poll
                  between individual commands and during length
                  commands.<span class="Apple-converted-space"> </span><br>
                  <br>
                  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.<br>
                  <br>
                  Best wishes,<span class="Apple-converted-space"> </span><br>
                  <br>
                  Jasper<br>
                  <br>
                  <br>
                  <br>
                  <div class="moz-cite-prefix">On 8/5/2015 10:21,
                    François Granade wrote:<br>
                  </div>
                  <blockquote class=" cite"
                    id="mid_4A7E6280_FEB2_4795_99F9_3ACC8DC4B6A6_scilab_enterprises_com"
cite="mid:4A7E6280-FEB2-4795-99F9-3ACC8DC4B6A6@scilab-enterprises.com"
                    type="cite" style="color: maroon !important;
                    background-color: rgb(235, 235, 235) !important;">Hi
                    Jasper,
                    <div><span style="background-color: rgb(255, 255,
                        255);"><br>
                      </span></div>
                    <div>Looks like you have found an interesting
                      question here...</div>
                    <div><br>
                    </div>
                    <div>First - there are no multiple concurrent
                      threads in the core. So we are safe (and so is the
                      API, without being thread-safe).</div>
                    <div><br>
                    </div>
                    <div>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).</div>
                    <div><br>
                    </div>
                    <div>Now, your point about COM loading, and
                      thread-local storage, is very valid, and may very
                      well mean that we should change this. </div>
                    <div><br>
                    </div>
                    <div>We will study if/how we could modify that...
                      we'll keep you posted.</div>
                    <div><br>
                    </div>
                    <div>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...</div>
                    <div><br>
                    </div>
                    <div>for the Scilab team,</div>
                    <div>François Granade</div>
                    <div><br>
                    </div>
                    <div><br>
                    </div>
                    <div><br>
                    </div>
                    <div>
                      <div>On Aug 4, 2015, at 9:21 AM, jasper van baten
                        <<a moz-do-not-send="true"
                          class="moz-txt-link-abbreviated"
                          href="mailto:jasper@amsterchem.com">jasper@amsterchem.com</a>>
                        wrote:</div>
                      <br class="Apple-interchange-newline">
                      <blockquote class=" cite" id="Cite_3818095"
                        type="cite" style="color: maroon !important;
                        background-color: rgb(235, 235, 235)
                        !important;">
                        <div style="font-family: Helvetica; font-size:
                          12px; font-style: normal; font-variant:
                          normal; font-weight: normal; letter-spacing:
                          normal; line-height: normal; orphans: auto;
                          text-align: start; text-indent: 0px;
                          text-transform: none; white-space: normal;
                          widows: auto; word-spacing: 0px;
                          -webkit-text-stroke-width: 0px;">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 (<a
                            moz-do-not-send="true"
                            class="moz-txt-link-freetext"
                            href="http://wiki.scilab.org/Documentation/ParallelComputingInScilab"><a class="moz-txt-link-freetext" href="http://wiki.scilab.org/Documentation/ParallelComputingInScilab">http://wiki.scilab.org/Documentation/ParallelComputingInScilab</a></a>).<br>
                          <br>
                          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.<span class="Apple-converted-space"> </span><br>
                          <br>
                          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.<br>
                          <br>
                          Having some idea about the threading model
                          that is intended and used would be helpful.<br>
                          <br>
                          Best wishes,<span
                            class="Apple-converted-space"> </span><br>
                          <br>
                          Jasper.<br>
                          <br>
                          <div class="moz-cite-prefix">On 7/31/2015
                            18:35, jasper van baten wrote:<br>
                          </div>
                          <blockquote class=" cite"
                            id="mid_55BBA3E6_4080903_amsterchem_com"
                            cite="mid:55BBA3E6.4080903@amsterchem.com"
                            type="cite" style="color: navy !important;
                            background-color: rgb(245, 245, 245)
                            !important;">All,<br>
                            <br>
                            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?<br>
                            <br>
                            Thanks, best wishes,<span
                              class="Apple-converted-space"> </span><br>
                            <br>
                            Jasper<br>
                            <br>
                            <fieldset class="mimeAttachmentHeader"></fieldset>
                            <br>
                            <pre wrap="">_______________________________________________
users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:users@lists.scilab.org">users@lists.scilab.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.scilab.org/mailman/listinfo/users">http://lists.scilab.org/mailman/listinfo/users</a>
</pre>
                          </blockquote>
                          <br>
_______________________________________________<br>
                          users mailing list<br>
                          <a moz-do-not-send="true"
                            href="mailto:users@lists.scilab.org">users@lists.scilab.org</a><br>
                          <a moz-do-not-send="true"
                            href="http://lists.scilab.org/mailman/listinfo/users">http://lists.scilab.org/mailman/listinfo/users</a></div>
                      </blockquote>
                    </div>
                    <br>
                    <br>
                    <fieldset class="mimeAttachmentHeader"></fieldset>
                    <br>
                    <pre wrap="">_______________________________________________
users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:users@lists.scilab.org">users@lists.scilab.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.scilab.org/mailman/listinfo/users">http://lists.scilab.org/mailman/listinfo/users</a>
</pre>
                  </blockquote>
                  <br>
                  <br>
                  <fieldset class="mimeAttachmentHeader"></fieldset>
                  <br>
                  <pre wrap="">_______________________________________________
users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:users@lists.scilab.org">users@lists.scilab.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.scilab.org/mailman/listinfo/users">http://lists.scilab.org/mailman/listinfo/users</a>
</pre>
                </blockquote>
                <br>
                _______________________________________________<br>
                users mailing list<br>
                <a moz-do-not-send="true"
                  href="mailto:users@lists.scilab.org">users@lists.scilab.org</a><br>
                <a moz-do-not-send="true"
                  href="http://lists.scilab.org/mailman/listinfo/users">http://lists.scilab.org/mailman/listinfo/users</a></div>
            </blockquote>
          </div>
          <br>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:users@lists.scilab.org">users@lists.scilab.org</a>
<a class="moz-txt-link-freetext" href="http://lists.scilab.org/mailman/listinfo/users">http://lists.scilab.org/mailman/listinfo/users</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>