<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    On 7/3/2022 5:48 AM, Jaromir Matas via Cuis-dev wrote:
    <blockquote
cite="mid:BYAPR03MB4072968135F661B66B59B43FEEBF9@BYAPR03MB4072.namprd03.prod.outlook.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Calibri Light";
        panose-1:2 15 3 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
        {mso-style-priority:1;
        margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";
        color:black;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
      <div class="WordSection1">
        <p class="MsoNormal">Hi Juan,<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">I hate to bring bad news but I’m afraid
          there’s still one outstanding issue ;)<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">s := Semaphore new.<o:p></o:p></p>
        <p class="MsoNormal">[1/0. s signal] fork.<o:p></o:p></p>
        <p class="MsoNormal">s wait.<o:p></o:p></p>
        <p class="MsoNormal">Transcript cr; show: 'done'<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">If you terminate a blocked UI it means it
          won’t be able to continue when signaled and won’t print ‘done’
          in this case.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">This feels like a natural requirement for
          the blocked UI to continue because if it was just a regular
          non-UI process we would want it continue too, I guess; like
          this:<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">[s := Semaphore new.<o:p></o:p></p>
        <p class="MsoNormal">[1/0. s signal] fork.<o:p></o:p></p>
        <p class="MsoNormal">s wait.<o:p></o:p></p>
        <p class="MsoNormal">Transcript cr; show: 'done'] fork<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">I look forward to hearing from you again,
          many thanks!<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">PS: I tried resuming instead of terminating
          the oldUIProcess but that of course ends up infamously with
          two UI processes ;)<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Best,<o:p></o:p></p>
        <p class="MsoNormal">Jaromir<o:p></o:p></p>
        <p class="MsoNoSpacing"><span lang="CS">--</span></p>
        <p class="MsoNoSpacing"><strong><span style="font-family:
              "Calibri Light",sans-serif; color: rgb(51, 51,
              51); font-weight: normal;">Jaromír Matas</span></strong><span
            style="font-family: "Calibri Light",sans-serif;
            color: rgb(85, 85, 85);"><o:p></o:p></span></p>
        <p class="MsoNoSpacing"><span style="font-family: "Calibri
            Light",sans-serif; color: rgb(46, 117, 182);"><a class="moz-txt-link-abbreviated" href="mailto:mail@jaromir.net">mail@jaromir.net</a></span></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <br>
      </div>
    </blockquote>
    <br>
    We could try resuming the old process. That would require detecting
    that a new UI process was created and terminate it. I don't like
    this, because it may be the new process the one that is doing
    relevant stuff now. Besides, this could lead to state corruption,
    depending (for example) on the state of method temp variables in
    both processes.<br>
    <br>
    I think it is reasonable to state that the UI process, as the other
    system created processes are a bit special: The system needs to
    guarantee that there is always an UI process ready to run. This
    might mean the system messing with these processes occasionally.
    People wanting to have absolute control over processes should fork
    their own.<br>
    <br>
    Thanks,<br>
    <pre class="moz-signature" cols="72">-- 
Juan Vuletich
<a class="moz-txt-link-abbreviated" href="http://www.cuis-smalltalk.org">www.cuis-smalltalk.org</a>
<a class="moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a>
<a class="moz-txt-link-freetext" href="https://github.com/jvuletich">https://github.com/jvuletich</a>
<a class="moz-txt-link-freetext" href="https://www.linkedin.com/in/juan-vuletich-75611b3">https://www.linkedin.com/in/juan-vuletich-75611b3</a>
<a class="moz-txt-link-freetext" href="https://independent.academia.edu/JuanVuletich">https://independent.academia.edu/JuanVuletich</a>
<a class="moz-txt-link-freetext" href="https://www.researchgate.net/profile/Juan-Vuletich">https://www.researchgate.net/profile/Juan-Vuletich</a>
<a class="moz-txt-link-freetext" href="https://patents.justia.com/inventor/juan-manuel-vuletich">https://patents.justia.com/inventor/juan-manuel-vuletich</a>
<a class="moz-txt-link-freetext" href="https://twitter.com/JuanVuletich">https://twitter.com/JuanVuletich</a></pre>
  </body>
</html>