<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>memo.393 &#187; Thread</title>
	<atom:link href="http://memo.393.bz/archives/tag/thread/feed" rel="self" type="application/rss+xml" />
	<link>http://memo.393.bz</link>
	<description>個人的メモです。間違いなどありましたらご指摘ください。。。</description>
	<lastBuildDate>Sun, 27 Nov 2011 15:27:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[AS]Threadでのjoin()について</title>
		<link>http://memo.393.bz/archives/122</link>
		<comments>http://memo.393.bz/archives/122#comments</comments>
		<pubDate>Thu, 25 Dec 2008 04:28:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Thread]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=122</guid>
		<description><![CDATA[以下のように書くとエラーだった。 1個の関数内で、ParallelExecutorを2個作る。例えばa,b。 function test(){ a:ParallelExecutor = new ParallelExecu [...]]]></description>
			<content:encoded><![CDATA[<p>以下のように書くとエラーだった。</p>
<p>1個の関数内で、ParallelExecutorを2個作る。例えばa,b。</p>
<pre name="code" class="as">

function test(){
a:ParallelExecutor = new ParallelExecutor();
b:ParallelExecutor = new ParallelExecutor();
～省略～
a.start();
a.join();
b.start();
b.join();
}
</pre>
<p>b.join()をコメントアウトするので動くので、1個の関数内で複数joinはダメぽ。<br />
また↓のように関数分けて、next()で移動してもOK(当然か)</p>
<pre name="code" class="as">

function test(){
var a:ParallelExecutor = new ParallelExecutor();
～省略～
a.start();
a.join();
next(test2);
}
function test2(){
var b:ParallelExecutor = new ParallelExecutor();
b.start();
b.join();
}
</pre>
<p>以下、偉人からのアドバイスメモ(今はまだ全理解しきれてない・・・)<br />
 joinのときは A.hoge() -> B.join() -> B.joinMonitor.wait() という感じでBを待つ状態。<br />
Queue的なときはA.hoge() -> B.checkPoll() -> (データが鳴ければ)B.monitor.wait() で待ち状態。<br />
それぞれ waitしようとしたときに、Aがすでに何かの待ちになっているとそれはエラー。<br />
Threadはクラスメソッド内でいろいろしていて、どこかの処理でwaitが呼ばれたときに、呼び元(今動いてる)のThreadを待たせるといのが基本動作。<br />
呼ばれた人が呼んだ人を状況により待たせるイメージ。<br />
あるスレッドは同時に1つのスレッドしか待てない。<br />
逆にあるスレッドを待ってるスレッドは何個でも待てる。</p>
<p>//2009/1/17追記<br />
joinｔ()とsleep()は同時に使えないみたい。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/122/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

