<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Adi Levin&#039;s Blog for programmers</title>
	<atom:link href="http://adilevin.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://adilevin.wordpress.com</link>
	<description>A blog about programming for programmers</description>
	<lastBuildDate>Thu, 05 Jan 2012 14:57:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='adilevin.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/bc0c010313c8ea9e89b88219f2478308?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Adi Levin&#039;s Blog for programmers</title>
		<link>http://adilevin.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://adilevin.wordpress.com/osd.xml" title="Adi Levin&#039;s Blog for programmers" />
	<atom:link rel='hub' href='http://adilevin.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Incremental coding</title>
		<link>http://adilevin.wordpress.com/2011/06/01/incremental-codin/</link>
		<comments>http://adilevin.wordpress.com/2011/06/01/incremental-codin/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 14:15:45 +0000</pubDate>
		<dc:creator>adilevin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[incremental coding]]></category>

		<guid isPermaLink="false">http://adilevin.wordpress.com/?p=348</guid>
		<description><![CDATA[As I keep developing my programming skills, I am always looking for ways to make my work more efficient, and to write bug-free code. In particular, I use what I like to call incremental coding. The idea is that when you modify a feature in your program or add a new feature, you should take [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adilevin.wordpress.com&amp;blog=7961689&amp;post=348&amp;subd=adilevin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
		<wfw:commentRss>http://adilevin.wordpress.com/2011/06/01/incremental-codin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fca7cf19b40c1a0dcc58abbed81f0bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adilevin</media:title>
		</media:content>
	</item>
		<item>
		<title>Determinism</title>
		<link>http://adilevin.wordpress.com/2010/12/13/determinism/</link>
		<comments>http://adilevin.wordpress.com/2010/12/13/determinism/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 15:30:54 +0000</pubDate>
		<dc:creator>adilevin</dc:creator>
				<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Determinism]]></category>
		<category><![CDATA[Non-deterministic behavior]]></category>

		<guid isPermaLink="false">http://adilevin.wordpress.com/?p=337</guid>
		<description><![CDATA[Multithreaded computations are sometimes non-deterministic, meaning that they produce different results in different runs that have the exact same input. In some cases, this is a result of insufficient synchronization between threads, causing Race Conditions (A Race Condition is actually defined as a critical non-deterministic behavior). In other cases the non-deterministic behavior is not critical, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adilevin.wordpress.com&amp;blog=7961689&amp;post=337&amp;subd=adilevin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
		<wfw:commentRss>http://adilevin.wordpress.com/2010/12/13/determinism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fca7cf19b40c1a0dcc58abbed81f0bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adilevin</media:title>
		</media:content>
	</item>
		<item>
		<title>Threads Barrier</title>
		<link>http://adilevin.wordpress.com/2010/01/23/threads-barrier/</link>
		<comments>http://adilevin.wordpress.com/2010/01/23/threads-barrier/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 06:23:19 +0000</pubDate>
		<dc:creator>adilevin</dc:creator>
				<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[barrier]]></category>
		<category><![CDATA[synchronization]]></category>
		<category><![CDATA[threads]]></category>

		<guid isPermaLink="false">http://adilevin.wordpress.com/?p=321</guid>
		<description><![CDATA[The purpose of a Threads Barrier is to synchronize a collection of threads. Many parallel computing programs are implemented by the SPMD model (Single Program Multiple Data). In this model, a number of threads (or computers) run the same function (or program), but each thread is responsible for handling a different part of the data.   [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adilevin.wordpress.com&amp;blog=7961689&amp;post=321&amp;subd=adilevin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
		<wfw:commentRss>http://adilevin.wordpress.com/2010/01/23/threads-barrier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fca7cf19b40c1a0dcc58abbed81f0bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adilevin</media:title>
		</media:content>
	</item>
		<item>
		<title>Ending a thread</title>
		<link>http://adilevin.wordpress.com/2009/09/19/ending-a-thread/</link>
		<comments>http://adilevin.wordpress.com/2009/09/19/ending-a-thread/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 10:59:08 +0000</pubDate>
		<dc:creator>adilevin</dc:creator>
				<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[ExitThread]]></category>
		<category><![CDATA[TerminateThread]]></category>
		<category><![CDATA[thread]]></category>

		<guid isPermaLink="false">http://adilevin.wordpress.com/?p=309</guid>
		<description><![CDATA[There are three ways to end a thread: Return from the thread function, call ExitThread from within the thread, and call TerminateThreadfrom any thread. The best thing to do is return from the thread function. This way, you guarantee that all destructors of automatic variables have been called, and that thread termination is done properly. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adilevin.wordpress.com&amp;blog=7961689&amp;post=309&amp;subd=adilevin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
		<wfw:commentRss>http://adilevin.wordpress.com/2009/09/19/ending-a-thread/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fca7cf19b40c1a0dcc58abbed81f0bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adilevin</media:title>
		</media:content>
	</item>
		<item>
		<title>Windows Thread Pool</title>
		<link>http://adilevin.wordpress.com/2009/09/12/windows-thread-pool/</link>
		<comments>http://adilevin.wordpress.com/2009/09/12/windows-thread-pool/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 11:13:29 +0000</pubDate>
		<dc:creator>adilevin</dc:creator>
				<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[Thread Pool]]></category>

		<guid isPermaLink="false">http://adilevin.wordpress.com/?p=297</guid>
		<description><![CDATA[As an alternative to creating threads and explicitly assigning tasks to threads, Windows offers a collection of API functions that manage a pool of threads. The idea is that the operating system will be responsible for the creation and deletion of threads. To execute a certain function on a thread from the thread pool, the programmer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adilevin.wordpress.com&amp;blog=7961689&amp;post=297&amp;subd=adilevin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
		<wfw:commentRss>http://adilevin.wordpress.com/2009/09/12/windows-thread-pool/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fca7cf19b40c1a0dcc58abbed81f0bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adilevin</media:title>
		</media:content>
	</item>
		<item>
		<title>Constrained Parallelism</title>
		<link>http://adilevin.wordpress.com/2009/08/30/constrained-parallelism/</link>
		<comments>http://adilevin.wordpress.com/2009/08/30/constrained-parallelism/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 18:00:56 +0000</pubDate>
		<dc:creator>adilevin</dc:creator>
				<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[parallelism]]></category>
		<category><![CDATA[PostThreadMessage]]></category>

		<guid isPermaLink="false">http://adilevin.wordpress.com/?p=285</guid>
		<description><![CDATA[This pattern is useful for parallelising complex algorithms, since it enables the programmer to exploit all possible parallelisms in the algorithm. As input to the pattern, we have N tasks. For each pair of tasks i=0,1,&#8230;,N-1 and j=0,1,&#8230;,N-1 we are given two pieces of information: Must_Preceed(i,j) and Can_Run_In_Parallel(i,j). When Must_Preceed(i,j)=true, this means that task #j is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adilevin.wordpress.com&amp;blog=7961689&amp;post=285&amp;subd=adilevin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
		<wfw:commentRss>http://adilevin.wordpress.com/2009/08/30/constrained-parallelism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fca7cf19b40c1a0dcc58abbed81f0bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adilevin</media:title>
		</media:content>
	</item>
		<item>
		<title>Multithreading Patterns #4 &#8211; pipeline</title>
		<link>http://adilevin.wordpress.com/2009/08/29/multithreading-patterns-4-pipeline/</link>
		<comments>http://adilevin.wordpress.com/2009/08/29/multithreading-patterns-4-pipeline/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 18:01:43 +0000</pubDate>
		<dc:creator>adilevin</dc:creator>
				<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[pipeline]]></category>

		<guid isPermaLink="false">http://adilevin.wordpress.com/?p=279</guid>
		<description><![CDATA[The Pipeline pattern is suitable when there is a collection of items, and each item needs to go through the same sequence of filters. Each filter can run in parallel to other filters, but can only process one item at a time. For example, imagine a military application that decrypts enemy messages and translates them to the language of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adilevin.wordpress.com&amp;blog=7961689&amp;post=279&amp;subd=adilevin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
		<wfw:commentRss>http://adilevin.wordpress.com/2009/08/29/multithreading-patterns-4-pipeline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fca7cf19b40c1a0dcc58abbed81f0bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adilevin</media:title>
		</media:content>
	</item>
		<item>
		<title>Multithreading Patterns #3 &#8211; Call In Main Thread</title>
		<link>http://adilevin.wordpress.com/2009/08/01/multithreading-patterns-3-call-in-main-thread/</link>
		<comments>http://adilevin.wordpress.com/2009/08/01/multithreading-patterns-3-call-in-main-thread/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 06:42:55 +0000</pubDate>
		<dc:creator>adilevin</dc:creator>
				<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[background thread]]></category>
		<category><![CDATA[call in main thread]]></category>
		<category><![CDATA[PostMessage]]></category>
		<category><![CDATA[SendMessage]]></category>
		<category><![CDATA[windows messages]]></category>

		<guid isPermaLink="false">http://adilevin.wordpress.com/?p=250</guid>
		<description><![CDATA[Motivation This pattern is very useful when using the &#8220;background thread&#8221; pattern. Typically, the main thread is responsible for all UI operations (handling events and drawing controls and graphics).  When a background computation is performed in a different thread, you sometimes need to update controls (such as text controls) or data that is used for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adilevin.wordpress.com&amp;blog=7961689&amp;post=250&amp;subd=adilevin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
		<wfw:commentRss>http://adilevin.wordpress.com/2009/08/01/multithreading-patterns-3-call-in-main-thread/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fca7cf19b40c1a0dcc58abbed81f0bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adilevin</media:title>
		</media:content>
	</item>
		<item>
		<title>Multithreading Patterns #2 &#8211; background thread</title>
		<link>http://adilevin.wordpress.com/2009/08/01/multithreading-patterns-2-background-thread/</link>
		<comments>http://adilevin.wordpress.com/2009/08/01/multithreading-patterns-2-background-thread/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 06:17:08 +0000</pubDate>
		<dc:creator>adilevin</dc:creator>
				<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[background thread]]></category>
		<category><![CDATA[thread safety]]></category>

		<guid isPermaLink="false">http://adilevin.wordpress.com/?p=244</guid>
		<description><![CDATA[Typically, the main thread of an application performs all UI operations, such as responding to mouse events, updating windows and drawing graphics. If a long computation is performed in the main thread, the application is non-responsive until the computation is over. The purpose of a background thread is to enable responsiveness. The application will keep [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adilevin.wordpress.com&amp;blog=7961689&amp;post=244&amp;subd=adilevin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
		<wfw:commentRss>http://adilevin.wordpress.com/2009/08/01/multithreading-patterns-2-background-thread/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fca7cf19b40c1a0dcc58abbed81f0bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adilevin</media:title>
		</media:content>
	</item>
		<item>
		<title>Multithreading Patterns #1 &#8211; Fork-Join</title>
		<link>http://adilevin.wordpress.com/2009/07/24/multithreading-patterns-1-fork-join/</link>
		<comments>http://adilevin.wordpress.com/2009/07/24/multithreading-patterns-1-fork-join/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 08:33:19 +0000</pubDate>
		<dc:creator>adilevin</dc:creator>
				<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[fork-join]]></category>

		<guid isPermaLink="false">http://adilevin.wordpress.com/?p=241</guid>
		<description><![CDATA[The purpose of the Fork-Join patten is to parallelize a part of an algorithm through task-parallelism. &#8220;Fork&#8221; means that the calling thread asks other threads to perform tasks, instead of performing it sequentially. &#8220;Join&#8221; means that the calling thread waits until all tasks have been accomplished by the other threads. In some cases the &#8220;Join&#8221; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adilevin.wordpress.com&amp;blog=7961689&amp;post=241&amp;subd=adilevin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
		<wfw:commentRss>http://adilevin.wordpress.com/2009/07/24/multithreading-patterns-1-fork-join/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fca7cf19b40c1a0dcc58abbed81f0bc?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adilevin</media:title>
		</media:content>
	</item>
	</channel>
</rss>
