<?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"
	>
<channel>
	<title>Comments on: Reentrant VI Clone Name</title>
	<atom:link href="http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/feed/" rel="self" type="application/rss+xml" />
	<link>http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/</link>
	<description>an unfiltered stream of data flow consciousness</description>
	<pubDate>Fri,  5 Sep 2008 20:06:23 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
		<item>
		<title>By: Jim Kring</title>
		<link>http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-201</link>
		<dc:creator>Jim Kring</dc:creator>
		<pubDate>Sat, 31 Mar 2007 21:32:33 +0000</pubDate>
		<guid isPermaLink="false">http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-201</guid>
		<description>Todd,

Thanks for the support.  Your comment about not having the time to dig through all the OpenG VIs to discover the gems is something that I've heard a lot.  I was thinking that we needed more examples and then the idea struck me that I should just post examples as blog articles.  This would also allow me to discuss related ideas and better organize the content.  Plus, a "steady drip" (mmmm coffee) of articles over time should help people find time to digest all this information.  I appreciate you letting me know which OpenG VIs/libraries your interested in learning about.  I'll try to get around to mentioning the OpenG Message Queue library (with Response Notifier), sometime soon.

Regarding the differences between *.vit (VI Templates) and reentrant VIs, I prefer reentrant VIs (especially as of LabVIEW 8.2, where each instance has it's own Front Panel and Block Diagram).  VI Templates aren't great, IMO, because you cannot instantiate them when they are reserved for execution (in the call chain of a running VI).  I really like to use the Static VI Reference to store my spawned VI (getting the VI Name dynamically using a property node, as shown in the article's screenshot) and this doesn't work with VI Templates.  With VI Templates, you have to include them as Dynamic VIs in your build rules (otherwise they don't make it into your EXE) and you have to hard-code the VI Name/Path for opening an instance reference -- too much trouble, IMO.</description>
		<content:encoded><![CDATA[<p>Todd,</p>
<p>Thanks for the support.  Your comment about not having the time to dig through all the OpenG VIs to discover the gems is something that I&#8217;ve heard a lot.  I was thinking that we needed more examples and then the idea struck me that I should just post examples as blog articles.  This would also allow me to discuss related ideas and better organize the content.  Plus, a &#8220;steady drip&#8221; (mmmm coffee) of articles over time should help people find time to digest all this information.  I appreciate you letting me know which OpenG VIs/libraries your interested in learning about.  I&#8217;ll try to get around to mentioning the OpenG Message Queue library (with Response Notifier), sometime soon.</p>
<p>Regarding the differences between *.vit (VI Templates) and reentrant VIs, I prefer reentrant VIs (especially as of LabVIEW 8.2, where each instance has it&#8217;s own Front Panel and Block Diagram).  VI Templates aren&#8217;t great, IMO, because you cannot instantiate them when they are reserved for execution (in the call chain of a running VI).  I really like to use the Static VI Reference to store my spawned VI (getting the VI Name dynamically using a property node, as shown in the article&#8217;s screenshot) and this doesn&#8217;t work with VI Templates.  With VI Templates, you have to include them as Dynamic VIs in your build rules (otherwise they don&#8217;t make it into your EXE) and you have to hard-code the VI Name/Path for opening an instance reference &#8212; too much trouble, IMO.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Todd</title>
		<link>http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-200</link>
		<dc:creator>Todd</dc:creator>
		<pubDate>Sat, 31 Mar 2007 21:12:26 +0000</pubDate>
		<guid isPermaLink="false">http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-200</guid>
		<description>Jim, 

First, I would like to start by saying I am very excited about your series on the OpenG tools.  I just started using these tools last year, and like you I now find the Variant Config File VI's indispensable. I have not had the time to look at, and understand, all the other libraries.  I am sure these articles will  expedite my usage of these tools and in turn help reduce my code development time.  Thanks, I eagerly anticipate your article on the OpenG queues with notifiers.

This article got me thinking about one of my projects. I spawned a .vit several times passing each one its own parameters and communicating to each one via a named queue, much like you suggest above with a spawned re-entrant VI and the clone name property.  Here is the question, what are the pros and cons of the method I used vs. the technique you mention above?</description>
		<content:encoded><![CDATA[<p>Jim, </p>
<p>First, I would like to start by saying I am very excited about your series on the OpenG tools.  I just started using these tools last year, and like you I now find the Variant Config File VI&#8217;s indispensable. I have not had the time to look at, and understand, all the other libraries.  I am sure these articles will  expedite my usage of these tools and in turn help reduce my code development time.  Thanks, I eagerly anticipate your article on the OpenG queues with notifiers.</p>
<p>This article got me thinking about one of my projects. I spawned a .vit several times passing each one its own parameters and communicating to each one via a named queue, much like you suggest above with a spawned re-entrant VI and the clone name property.  Here is the question, what are the pros and cons of the method I used vs. the technique you mention above?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Kring</title>
		<link>http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-199</link>
		<dc:creator>Jim Kring</dc:creator>
		<pubDate>Sat, 31 Mar 2007 19:57:30 +0000</pubDate>
		<guid isPermaLink="false">http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-199</guid>
		<description>John: You\'re exactly right.  If you want to see an example of process spawning in action, check out this &lt;a rel=\"nofollow\" href=\"http://www.openg.org/tiki/tiki-index.php?page=EXAMPLE+-+TCP+Server\" rel="nofollow"&gt;TCP Server example&lt;/a&gt; on OpenG.org.  This example, dynamically spawns asynchronous TCP listeners that wait on connections from TCP clients and then spawn an asynchronous connection handler for each client that connects.</description>
		<content:encoded><![CDATA[<p>John: You\&#8217;re exactly right.  If you want to see an example of process spawning in action, check out this <a rel=\"nofollow\" href=\"http://www.openg.org/tiki/tiki-index.php?page=EXAMPLE+-+TCP+Server\" rel="nofollow">TCP Server example</a> on OpenG.org.  This example, dynamically spawns asynchronous TCP listeners that wait on connections from TCP clients and then spawn an asynchronous connection handler for each client that connects.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John_Rouse</title>
		<link>http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-198</link>
		<dc:creator>John_Rouse</dc:creator>
		<pubDate>Sat, 31 Mar 2007 19:48:27 +0000</pubDate>
		<guid isPermaLink="false">http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-198</guid>
		<description>As always, a most advanced usage of LabVIEW. I can imagine how see technique could simplify creating object (process) instances and being able to get/set messages to them as they run independently and asynchronously. 
Is this a correct assumption?</description>
		<content:encoded><![CDATA[<p>As always, a most advanced usage of LabVIEW. I can imagine how see technique could simplify creating object (process) instances and being able to get/set messages to them as they run independently and asynchronously.<br />
Is this a correct assumption?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Kring</title>
		<link>http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-197</link>
		<dc:creator>Jim Kring</dc:creator>
		<pubDate>Sat, 31 Mar 2007 14:48:01 +0000</pubDate>
		<guid isPermaLink="false">http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-197</guid>
		<description>Vladimir: Yes, the “Auto Dispose Ref” setting will cause the reference to be garbage collected when the clone stops running.  However, I'm a little bit of a fanatic about closing references, myself :)

Zen and Tomi: I'm glad you liked the article.</description>
		<content:encoded><![CDATA[<p>Vladimir: Yes, the “Auto Dispose Ref” setting will cause the reference to be garbage collected when the clone stops running.  However, I&#8217;m a little bit of a fanatic about closing references, myself <img src='http://thinkinging.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Zen and Tomi: I&#8217;m glad you liked the article.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tomi Maila</title>
		<link>http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-196</link>
		<dc:creator>Tomi Maila</dc:creator>
		<pubDate>Sat, 31 Mar 2007 08:47:35 +0000</pubDate>
		<guid isPermaLink="false">http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-196</guid>
		<description>Hi Jim,

Thanks for this excellent article. I'll have to try this concept out with my ambiguous distributed supercomputing with LabVIEW project. I'm trying to use LabVIEW for data-analysis purposes in a Linux cluster supercomputer so that we wouldn't have to maintain a separate code base in different languages for the supercomputer and workstations.</description>
		<content:encoded><![CDATA[<p>Hi Jim,</p>
<p>Thanks for this excellent article. I&#8217;ll have to try this concept out with my ambiguous distributed supercomputing with LabVIEW project. I&#8217;m trying to use LabVIEW for data-analysis purposes in a Linux cluster supercomputer so that we wouldn&#8217;t have to maintain a separate code base in different languages for the supercomputer and workstations.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: zen</title>
		<link>http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-195</link>
		<dc:creator>zen</dc:creator>
		<pubDate>Fri, 30 Mar 2007 13:49:39 +0000</pubDate>
		<guid isPermaLink="false">http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-195</guid>
		<description>I wish I had read this article last month.  I spent quite a bit of time to figure out how to implment the single executable that spawn the clone winodow and each window control different DAQ device.  0x08 option was the hardest part for me to find. I did not know about Clone Name property, either.  I will use that if I have a chance in the future.  Great article!</description>
		<content:encoded><![CDATA[<p>I wish I had read this article last month.  I spent quite a bit of time to figure out how to implment the single executable that spawn the clone winodow and each window control different DAQ device.  0&#215;08 option was the hardest part for me to find. I did not know about Clone Name property, either.  I will use that if I have a chance in the future.  Great article!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vladimir Drzik</title>
		<link>http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-194</link>
		<dc:creator>Vladimir Drzik</dc:creator>
		<pubDate>Fri, 30 Mar 2007 10:21:59 +0000</pubDate>
		<guid isPermaLink="false">http://thinkinging.com/2007/03/29/reentrant-vi-clone-name/#comment-194</guid>
		<description>Hi Jim
I don't understand the meaning of the second-last paragraph quite well... Do you think each clone must close its own reference after completing execution? Can't this be done simply by specifying "Auto Dispose Ref" when calling Run VI?
Vladimir</description>
		<content:encoded><![CDATA[<p>Hi Jim<br />
I don&#8217;t understand the meaning of the second-last paragraph quite well&#8230; Do you think each clone must close its own reference after completing execution? Can&#8217;t this be done simply by specifying &#8220;Auto Dispose Ref&#8221; when calling Run VI?<br />
Vladimir</p>
]]></content:encoded>
	</item>
</channel>
</rss>
