<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	
	>
<channel>
	<title>
	Comments on: A story of simplification and abstraction (stackless timeouts)	</title>
	<atom:link href="https://www.robg3d.com/2014/01/a-story-of-simplification-and-abstraction-stackless-timeouts/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.robg3d.com/2014/01/a-story-of-simplification-and-abstraction-stackless-timeouts/</link>
	<description>Blog of Rob Galanakis (@robgalanakis)</description>
	<lastBuildDate>Sun, 29 Jun 2014 22:35:09 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.4.1</generator>
	<item>
		<title>
		By: Rob Galanakis		</title>
		<link>https://www.robg3d.com/2014/01/a-story-of-simplification-and-abstraction-stackless-timeouts/#comment-230721</link>

		<dc:creator><![CDATA[Rob Galanakis]]></dc:creator>
		<pubDate>Sun, 29 Jun 2014 22:35:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.robg3d.com/?p=1190#comment-230721</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://www.robg3d.com/2014/01/a-story-of-simplification-and-abstraction-stackless-timeouts/#comment-230306&quot;&gt;Jim Parris&lt;/a&gt;.

Hi Jim, you may need to grab the newest version from the BitBucket repo. Kristjan isn&#039;t the most prompt with new pypi versions.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://www.robg3d.com/2014/01/a-story-of-simplification-and-abstraction-stackless-timeouts/#comment-230306">Jim Parris</a>.</p>
<p>Hi Jim, you may need to grab the newest version from the BitBucket repo. Kristjan isn&#8217;t the most prompt with new pypi versions.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jim Parris		</title>
		<link>https://www.robg3d.com/2014/01/a-story-of-simplification-and-abstraction-stackless-timeouts/#comment-230306</link>

		<dc:creator><![CDATA[Jim Parris]]></dc:creator>
		<pubDate>Fri, 13 Jun 2014 15:20:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.robg3d.com/?p=1190#comment-230306</guid>

					<description><![CDATA[Say now, what version of stacklesslib are you guys using then?  

The version I have (the latest? stacklesslib-1.0.3-py2.7) does not have any such method as &#039;timeout&#039; or similar.]]></description>
			<content:encoded><![CDATA[<p>Say now, what version of stacklesslib are you guys using then?  </p>
<p>The version I have (the latest? stacklesslib-1.0.3-py2.7) does not have any such method as &#8216;timeout&#8217; or similar.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Adam Skutt		</title>
		<link>https://www.robg3d.com/2014/01/a-story-of-simplification-and-abstraction-stackless-timeouts/#comment-228024</link>

		<dc:creator><![CDATA[Adam Skutt]]></dc:creator>
		<pubDate>Sat, 11 Jan 2014 22:49:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.robg3d.com/?p=1190#comment-228024</guid>

					<description><![CDATA[Both.  You can&#039;t (generally) cancel blocking I/O, so you&#039;re left with a stuck thread until the I/O call returns.  You can&#039;t even portably close the I/O channel from a second thread, ignoring the rather difficult locking required to even attempt such a task.  

Ultimately, if your code uses an internal timeout to &quot;give up&quot; on an I/O operation, then you must have all the necessary machinery to deal with a stuck thread until the I/O operation completes, which may never happen.]]></description>
			<content:encoded><![CDATA[<p>Both.  You can&#8217;t (generally) cancel blocking I/O, so you&#8217;re left with a stuck thread until the I/O call returns.  You can&#8217;t even portably close the I/O channel from a second thread, ignoring the rather difficult locking required to even attempt such a task.  </p>
<p>Ultimately, if your code uses an internal timeout to &#8220;give up&#8221; on an I/O operation, then you must have all the necessary machinery to deal with a stuck thread until the I/O operation completes, which may never happen.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Rob Galanakis		</title>
		<link>https://www.robg3d.com/2014/01/a-story-of-simplification-and-abstraction-stackless-timeouts/#comment-228023</link>

		<dc:creator><![CDATA[Rob Galanakis]]></dc:creator>
		<pubDate>Sat, 11 Jan 2014 21:45:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.robg3d.com/?p=1190#comment-228023</guid>

					<description><![CDATA[Well getting to the root of a problem rather than addressing the symptom deserves a whole post of its own (is a common theme on Raymond Chen&#039;s blog) and I probably didn&#039;t do enough of it in this case (I got caught up teaching him about thread/tasklet scheduling and stuff like that). I&#039;m not sure what the resulting solution would have been, especially if it meant having to cut up some of his processing code which I suppose he wouldn&#039;t have wanted to do on short notice (the first versions of internal customer service tools tend to be rush jobs).

What do you mean by cleanup being more difficult with blocking IO? You mean cleaning up the thread or tasklet that is blocked?]]></description>
			<content:encoded><![CDATA[<p>Well getting to the root of a problem rather than addressing the symptom deserves a whole post of its own (is a common theme on Raymond Chen&#8217;s blog) and I probably didn&#8217;t do enough of it in this case (I got caught up teaching him about thread/tasklet scheduling and stuff like that). I&#8217;m not sure what the resulting solution would have been, especially if it meant having to cut up some of his processing code which I suppose he wouldn&#8217;t have wanted to do on short notice (the first versions of internal customer service tools tend to be rush jobs).</p>
<p>What do you mean by cleanup being more difficult with blocking IO? You mean cleaning up the thread or tasklet that is blocked?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Adam Skutt		</title>
		<link>https://www.robg3d.com/2014/01/a-story-of-simplification-and-abstraction-stackless-timeouts/#comment-228022</link>

		<dc:creator><![CDATA[Adam Skutt]]></dc:creator>
		<pubDate>Sat, 11 Jan 2014 21:31:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.robg3d.com/?p=1190#comment-228022</guid>

					<description><![CDATA[If the actual task was doing network I/O, then surely doing non-blocking I/O or using socket timeouts (where supported) is the simplest thing.  In particular, it makes clean up vastly more easy over the blocking I/O case.]]></description>
			<content:encoded><![CDATA[<p>If the actual task was doing network I/O, then surely doing non-blocking I/O or using socket timeouts (where supported) is the simplest thing.  In particular, it makes clean up vastly more easy over the blocking I/O case.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
