<?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/"
		>
<channel>
	<title>Comments on: Coroutines in Objective-C</title>
	<atom:link href="http://jens.mooseyard.com/2008/04/coroutines-in-objective-c/feed/" rel="self" type="application/rss+xml" />
	<link>http://jens.mooseyard.com/2008/04/coroutines-in-objective-c/</link>
	<description>Little boxes made of words, by Jens Alfke</description>
	<lastBuildDate>Sat, 04 Feb 2012 05:05:18 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Steven Harms</title>
		<link>http://jens.mooseyard.com/2008/04/coroutines-in-objective-c/comment-page-1/#comment-2613</link>
		<dc:creator>Steven Harms</dc:creator>
		<pubDate>Sat, 03 May 2008 16:49:00 +0000</pubDate>
		<guid isPermaLink="false">http://mooseyard.com/Jens/2008/04/coroutines-in-objective-c/#comment-2613</guid>
		<description>Jens,

I should be rather embarrassed by this error considering that I see the undersides of clouds all day long.

Apologies to Ms. Cloudy,

Steven</description>
		<content:encoded><![CDATA[<p>Jens,</p>
<p>I should be rather embarrassed by this error considering that I see the undersides of clouds all day long.</p>
<p>Apologies to Ms. Cloudy,</p>
<p>Steven</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jens Alfke</title>
		<link>http://jens.mooseyard.com/2008/04/coroutines-in-objective-c/comment-page-1/#comment-2612</link>
		<dc:creator>Jens Alfke</dc:creator>
		<pubDate>Sat, 03 May 2008 15:29:37 +0000</pubDate>
		<guid isPermaLink="false">http://mooseyard.com/Jens/2008/04/coroutines-in-objective-c/#comment-2612</guid>
		<description>Jens — Actually, the Actor model &lt;a href=&quot;http://en.wikipedia.org/wiki/Actor_model_early_history&quot; rel=&quot;nofollow&quot;&gt;dates back to 1973&lt;/a&gt;, so it&#039;s unfair to say it&#039;s &quot;reinventing OO&quot;. If anything, it&#039;s probably closer to the original simulation-based roots of Simula than Alan Kay&#039;s work on Smalltalk-72.

And asynchronous message delivery is a huge change. I&#039;ve been trying to follow the &lt;a href=&quot;http://en.wikipedia.org/wiki/Actor_model_theory&quot; rel=&quot;nofollow&quot;&gt;theoretical underpinnings&lt;/a&gt;, and they&#039;re very weird, being directly based on Special Relativity&#039;s notions of limited causality. (And in fact this is all like the way peers communicate on a network, so it&#039;s going to be useful for me whether or not I implement Actors at the micro-level inside Cloudy itself.)</description>
		<content:encoded><![CDATA[<p>Jens — Actually, the Actor model <a href="http://en.wikipedia.org/wiki/Actor_model_early_history" rel="nofollow">dates back to 1973</a>, so it&#8217;s unfair to say it&#8217;s &#8220;reinventing OO&#8221;. If anything, it&#8217;s probably closer to the original simulation-based roots of Simula than Alan Kay&#8217;s work on Smalltalk-72.</p>
<p>And asynchronous message delivery is a huge change. I&#8217;ve been trying to follow the <a href="http://en.wikipedia.org/wiki/Actor_model_theory" rel="nofollow">theoretical underpinnings</a>, and they&#8217;re very weird, being directly based on Special Relativity&#8217;s notions of limited causality. (And in fact this is all like the way peers communicate on a network, so it&#8217;s going to be useful for me whether or not I implement Actors at the micro-level inside Cloudy itself.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jens Alfke</title>
		<link>http://jens.mooseyard.com/2008/04/coroutines-in-objective-c/comment-page-1/#comment-2611</link>
		<dc:creator>Jens Alfke</dc:creator>
		<pubDate>Sat, 03 May 2008 15:21:23 +0000</pubDate>
		<guid isPermaLink="false">http://mooseyard.com/Jens/2008/04/coroutines-in-objective-c/#comment-2611</guid>
		<description>Steven — You mean &quot;herself&quot; =)</description>
		<content:encoded><![CDATA[<p>Steven — You mean &#8220;herself&#8221; =)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven Harms</title>
		<link>http://jens.mooseyard.com/2008/04/coroutines-in-objective-c/comment-page-1/#comment-2610</link>
		<dc:creator>Steven Harms</dc:creator>
		<pubDate>Sat, 03 May 2008 15:07:38 +0000</pubDate>
		<guid isPermaLink="false">http://mooseyard.com/Jens/2008/04/coroutines-in-objective-c/#comment-2610</guid>
		<description>A cloudy-related post sans Cloudy himself.  For shame!</description>
		<content:encoded><![CDATA[<p>A cloudy-related post sans Cloudy himself.  For shame!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: chanson (LJ)</title>
		<link>http://jens.mooseyard.com/2008/04/coroutines-in-objective-c/comment-page-1/#comment-2609</link>
		<dc:creator>chanson (LJ)</dc:creator>
		<pubDate>Thu, 01 May 2008 05:53:38 +0000</pubDate>
		<guid isPermaLink="false">http://mooseyard.com/Jens/2008/04/coroutines-in-objective-c/#comment-2609</guid>
		<description>The wonderful thing about NSOperation is that, so long as you stay away from shared state, you don&#039;t have to manage threads yourself.

Furthermore, there&#039;s no reason that actors have to correspond to cooperative threads. There&#039;s nothing inherently superior in cooperative threading - if you can use preemptive OS-supplied threading, especially via indirect mechanisms like NSOperation, you can take better advantage of multiple CPUs than if you try to multiplex everything.

The real problem in dealing with threaded code is manipulation of shared state, and that&#039;s going to be a problem regardless of whether your threads are preemptive or cooperative.  The only way to truly solve it is to avoid shared state as much as possible, and be as rigorous as possible in what you can&#039;t avoid.  Going cooperative-everything just sweeps the problem under the rug; you still have to get all your &quot;yield&quot; calls right, for one thing.</description>
		<content:encoded><![CDATA[<p>The wonderful thing about NSOperation is that, so long as you stay away from shared state, you don&#8217;t have to manage threads yourself.</p>
<p>Furthermore, there&#8217;s no reason that actors have to correspond to cooperative threads. There&#8217;s nothing inherently superior in cooperative threading - if you can use preemptive OS-supplied threading, especially via indirect mechanisms like NSOperation, you can take better advantage of multiple CPUs than if you try to multiplex everything.</p>
<p>The real problem in dealing with threaded code is manipulation of shared state, and that&#8217;s going to be a problem regardless of whether your threads are preemptive or cooperative.  The only way to truly solve it is to avoid shared state as much as possible, and be as rigorous as possible in what you can&#8217;t avoid.  Going cooperative-everything just sweeps the problem under the rug; you still have to get all your &#8220;yield&#8221; calls right, for one thing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jens Ayton</title>
		<link>http://jens.mooseyard.com/2008/04/coroutines-in-objective-c/comment-page-1/#comment-2608</link>
		<dc:creator>Jens Ayton</dc:creator>
		<pubDate>Wed, 30 Apr 2008 23:02:51 +0000</pubDate>
		<guid isPermaLink="false">http://mooseyard.com/Jens/2008/04/coroutines-in-objective-c/#comment-2608</guid>
		<description>“Actors interact by message-passing instead of shared state.”

I love the way people keep reinventing OO. :-)  (I like the idea of actors, mind, but they’re basically OO as described by Alan Kay with the implied assumption of synchronous operation removed.)</description>
		<content:encoded><![CDATA[<p>“Actors interact by message-passing instead of shared state.”</p>
<p>I love the way people keep reinventing OO. :-)  (I like the idea of actors, mind, but they’re basically OO as described by Alan Kay with the implied assumption of synchronous operation removed.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: paracelsvs (LJ)</title>
		<link>http://jens.mooseyard.com/2008/04/coroutines-in-objective-c/comment-page-1/#comment-2607</link>
		<dc:creator>paracelsvs (LJ)</dc:creator>
		<pubDate>Wed, 30 Apr 2008 22:43:53 +0000</pubDate>
		<guid isPermaLink="false">http://mooseyard.com/Jens/2008/04/coroutines-in-objective-c/#comment-2607</guid>
		<description>Well, I made this earlier:

http://www.cocoadev.com/index.pl?CSCoroutine

It has no external dependencies, is very short and simple, and uses proxy objects to make invocations as simple and straightforward as possible. It is thread safe and allows having coroutines jump between threads. Using it together with exceptions is possible but requires care.

See http://www.cocoadev.com/index.pl?CSCoroutineTest for examples of how it works.</description>
		<content:encoded><![CDATA[<p>Well, I made this earlier:</p>
<p><a href="http://www.cocoadev.com/index.pl?CSCoroutine" rel="nofollow">http://www.cocoadev.com/index.pl?CSCoroutine</a></p>
<p>It has no external dependencies, is very short and simple, and uses proxy objects to make invocations as simple and straightforward as possible. It is thread safe and allows having coroutines jump between threads. Using it together with exceptions is possible but requires care.</p>
<p>See <a href="http://www.cocoadev.com/index.pl?CSCoroutineTest" rel="nofollow">http://www.cocoadev.com/index.pl?CSCoroutineTest</a> for examples of how it works.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

