<div dir="ltr">Forgive the pedantry: do you mean "breathe", rather than "breath"?<br><br><div class="gmail_quote">On Wed, Aug 27, 2008 at 6:42 PM, Bruce Frederiksen <span dir="ltr"><<a href="mailto:dangyogi@gmail.com">dangyogi@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">In this case, you're misunderstanding :-).<br>
<br>
What I meant by a "long running" micro_thread starving other micro-threads, was a micro_thread that doesn't do anything that would cause it to be suspended (e.g., I/O, sleep).<br>
<br>
For example, calculating the number PI to 2000 digits will starve other micro_threads.<br>
<br>
Each time a micro_thread does something which causes it to be suspended (like a file.read that needs to access the disk, a socket.recv or a time.sleep), other micro_threads may run.  So the first micro_thread doesn't cause the whole os-thread (generally the whole Python program) to be suspended, like it does now.<br>

<br>
But if one micro_thread uses the CPU for a long time without doing any I/O, then other micro_threads are starved because micro_threads are non-preemptive (unlike os-threads).<br>
<br>
I'm adding a "breath" function that allows responsible micro_threads to "come up for air" periodically, to give other micro_threads a chance to run.  But nothing forces a micro_thread to cooperate like this...<br>

<br>
I hopes this helps to clear things up!<br>
<br>
-bruce<div><div></div><div class="Wj3C7c"><br>
<br>
<br>
Jerry Spicklemire wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Bruce wrote:<br>
<br>
"The micro_pipes use the C_deferreds to suspend the thread<br>
and allow other threads to run."<br>
<br>
<a href="http://mail.python.org/pipermail/python-ideas/2008-August/001848.html" target="_blank">http://mail.python.org/pipermail/python-ideas/2008-August/001848.html</a><br>
<br>
<br>
However, in the PEP you mention, among the short list of<br>
disadvantages:<br>
<br>
"since there is no preemption, a long running micro-thread will starve other micro-threads"<br>
<br>
<a href="http://mail.python.org/pipermail/python-ideas/2008-August/001825.html" target="_blank">http://mail.python.org/pipermail/python-ideas/2008-August/001825.html</a><br>
<br>
<br>
<br>
Are these two point contradictory, or am I simply misunderstanding, as usual.<br>
  <br>
</blockquote></div></div>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-ideas" target="_blank">http://mail.python.org/mailman/listinfo/python-ideas</a><br>
</blockquote></div><br></div>