<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Mincho;
panose-1:2 2 6 9 4 3 5 8 3 5;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Texto sin formato Car";
margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-priority:99;
mso-style-link:"Texto de globo Car";
margin:0cm;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";
mso-fareast-language:EN-US;}
span.TextosinformatoCar
{mso-style-name:"Texto sin formato Car";
mso-style-priority:99;
mso-style-link:"Texto sin formato";
font-family:"Calibri","sans-serif";}
span.TextodegloboCar
{mso-style-name:"Texto de globo Car";
mso-style-priority:99;
mso-style-link:"Texto de globo";
font-family:"Tahoma","sans-serif";}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="ES-CO" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoPlainText"><span lang="EN-US">Hi:<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Don't try to make this sound like a special case, this is different type operator semantics, the language doesn’t allow that behavior and is a design error according to Nelson.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Thanks in advance<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="ES" style="mso-fareast-language:ES-CO">-----Mensaje original-----<br>
De: Dragiša Durić [mailto:dragisha@m3w.org] <br>
Enviado el: Viernes, 11 de Julio de 2014 12:10 a.m.<br>
Para: Hendrik Boom<br>
CC: m3devel@elegosoft.com<br>
Asunto: Re: [M3devel] Fork bug</span></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">IIRC, there is at least one recursive locking case in cm3 source, implemented ad-hoc in RTAllocator or RTCollector. Can’t remember right now.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Legitimate needs for recursive locking do exist. In special enough cases. It is not reason to make all MUTEX objects into recursive MUTEXes.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Daniel’s argument is a bit tangential here. New operator and specialized subclass are not comparable in any way.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><span lang="EN-US">On 11 Jul 2014, at 06:36, Hendrik Boom <</span><a href="mailto:hendrik@topoi.pooq.com"><span lang="EN-US" style="color:windowtext;text-decoration:none">hendrik@topoi.pooq.com</span></a><span lang="EN-US">> wrote:<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText">> On Thu, Jul 10, 2014 at 10:39:41PM +0000, Daniel Alejandro Benavides Diaz wrote:<o:p></o:p></p>
<p class="MsoPlainText">>> Hi all:<o:p></o:p></p>
<p class="MsoPlainText">>> We can see this kind of reasoning in the The C++ Programming Language report quote in SPWM3, as it reads like "C++ has a lot of operators and while be explained where and if needed".<o:p></o:p></p>
<p class="MsoPlainText">>> <o:p></o:p></p>
<p class="MsoPlainText">>> This is not reasonable for my, please don't make me attempt return
<o:p></o:p></p>
<p class="MsoPlainText">>> Dragisha :)<o:p></o:p></p>
<p class="MsoPlainText">>> <o:p></o:p></p>
<p class="MsoPlainText">>> Thanks in advance<o:p></o:p></p>
<p class="MsoPlainText">>> <o:p></o:p></p>
<p class="MsoPlainText">>> De: Dragiša Durić [<a href="mailto:dragisha@m3w.org"><span style="color:windowtext;text-decoration:none">mailto:dragisha@m3w.org</span></a>] Enviado el: Miércoles, 09
<o:p></o:p></p>
<p class="MsoPlainText">>> de Julio de 2014 12:05 a.m.<o:p></o:p></p>
<p class="MsoPlainText">>> Para: <a href="mailto:rodney.m.bates@acm.org"><span style="color:windowtext;text-decoration:none">rodney.m.bates@acm.org</span></a><o:p></o:p></p>
<p class="MsoPlainText">>> CC: m3devel<o:p></o:p></p>
<p class="MsoPlainText">>> Asunto: Re: [M3devel] Fwd: Fork bug<o:p></o:p></p>
<p class="MsoPlainText">>> <o:p></o:p></p>
<p class="MsoPlainText">>> We can implement specific MUTEX subclass with this behavior and use it where its use can be rationalised and where it is needed/correct-thing-to-do.<o:p></o:p></p>
<p class="MsoPlainText">>> <o:p></o:p></p>
<p class="MsoPlainText">>> This way you get specific behavior without (in eyes of most people) breaking up with what has become normal and expected behavior of MUTEXes.<o:p></o:p></p>
<p class="MsoPlainText">>> <o:p></o:p></p>
<p class="MsoPlainText"><span lang="EN-US">>> On 08 Jul 2014, at 21:20, Rodney M. Bates <</span><a href="mailto:rodney_bates@lcwb.coop%3cmailto:rodney_bates@lcwb.coop"><span lang="EN-US" style="color:windowtext;text-decoration:none">rodney_bates@lcwb.coop<mailto:rodney_bates@lcwb.coop</span></a><span lang="EN-US">>>
wrote:<o:p></o:p></span></p>
<p class="MsoPlainText">>> <o:p></o:p></p>
<p class="MsoPlainText">>> <o:p></o:p></p>
<p class="MsoPlainText">>> <o:p></o:p></p>
<p class="MsoPlainText">>> While we are working on MUTEX, I would like to propose making them
<o:p></o:p></p>
<p class="MsoPlainText">>> what I believe is meant by a recursive mutex, that is, one thread can
<o:p></o:p></p>
<p class="MsoPlainText">>> lock multiple times, the mutex being released only when the number of
<o:p></o:p></p>
<p class="MsoPlainText">>> unlocks catches up with the number of locks.<o:p></o:p></p>
<p class="MsoPlainText">>> <o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Recursive reentry into a semaphore might just possibly indicate a
<o:p></o:p></p>
<p class="MsoPlainText">> serious bug in the logic of one's program. It is not the purpose of
<o:p></o:p></p>
<p class="MsoPlainText">> Modula 3 to paper over the effects of bad programming, however
<o:p></o:p></p>
<p class="MsoPlainText">> convenient it seems to be.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> Perhaps if you came up with useful, convenient, and elegant proof
<o:p></o:p></p>
<p class="MsoPlainText">> rules for your desired behaviour, you might convince me otherwise.<o:p></o:p></p>
<p class="MsoPlainText">> <o:p></o:p></p>
<p class="MsoPlainText">> -- hendrik<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
</div>
</body>
</html>