<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/'>
<channel>
  <title>Multithreaded programming discusions.</title>
  <link>http://community.livejournal.com/multithreading/</link>
  <description>Multithreaded programming discusions. - LiveJournal.com</description>
  <lastBuildDate>Mon, 10 Dec 2007 22:56:59 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>multithreading</lj:journal>
  <lj:journaltype>community</lj:journaltype>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/6522.html</guid>
  <pubDate>Mon, 10 Dec 2007 22:56:59 GMT</pubDate>
  <title>Parallel Computing Releases at Microsoft</title>
  <link>http://community.livejournal.com/multithreading/6522.html</link>
  <description>From http://herbsutter.spaces.live.com :&lt;br /&gt;&lt;blockquote&gt;&lt;h4 style=&quot;margin-bottom: 0px;&quot; class=&quot;TextColor1&quot;&gt;&lt;a href=&quot;http://herbsutter.spaces.live.com/blog/cns%212D4327CC297151BB%21363.entry&quot;&gt;Parallel Computing Releases at Microsoft&lt;/a&gt;&lt;/h4&gt; &lt;div class=&quot;bvMsg&quot;&gt;&lt;p&gt;For those of you who may be interested in concurrency for Microsoft platforms, and .NET in particular,&amp;nbsp;I&apos;m happy to report some&amp;nbsp;fresh announcements: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/concurrency/default.aspx&quot;&gt;&lt;b&gt;MSDN has launched a Parallel Computing developer center.&lt;/b&gt;&lt;/a&gt; This is&amp;nbsp;a section of the MSDN site&amp;nbsp;focused on &quot;providing information, ideas, community, and technology to developers to make it easier to write programs that perform and scale well on parallel hardware.&quot; &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyId=E848DC1D-5BE3-4941-8705-024BC7F180BA&amp;amp;displaylang=en&quot;&gt;&lt;b&gt;You can download and try a&amp;nbsp;CTP &quot;preview&quot; of the .NET Parallel Extensions (PFX).&lt;/b&gt;&lt;/a&gt; These compile and run, but remember they&apos;re &lt;a href=&quot;http://blogs.msdn.com/pfxteam/archive/2007/11/29/6558557.aspx&quot;&gt;CTP quality&lt;/a&gt;. PFX currently has two major parts:  &lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/msdnmag/issues/07/10/PLINQ/default.aspx&quot;&gt;&lt;b&gt;PLINQ:&lt;/b&gt; Parallel Language Integrated&amp;nbsp;Query&lt;/a&gt;, a parallel version of LINQ with extensions like .AsParallel.  &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/msdnmag/issues/07/10/Futures/default.aspx&quot;&gt;&lt;b&gt;TPL:&lt;/b&gt; Task Parallel Library&lt;/a&gt; with extensions like Parallel.For loops. &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;There&apos;s also a &lt;a href=&quot;http://blogs.msdn.com/pfxteam/default.aspx&quot;&gt;&lt;b&gt;PFX Team Blog.&lt;/b&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;PFX is for .NET concurrency development, but of course we are (and personally I am)&amp;nbsp;working on native development tools, including for C++ specifically,&amp;nbsp;that are at least as exciting. Stay tuned here for future news. In the meantime, enjoy these bits and the resources and discussion on the Parallel Computing developer center and forums.&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;</description>
  <comments>http://community.livejournal.com/multithreading/6522.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>smesh</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/6358.html</guid>
  <pubDate>Thu, 15 Nov 2007 19:06:25 GMT</pubDate>
  <title>http://highscalability.com</title>
  <link>http://community.livejournal.com/multithreading/6358.html</link>
  <description>В статье &quot;&lt;a href=&quot;http://royal.pingdom.com/?p=173&quot;&gt;What nine of the world’s largest websites are running on&lt;/a&gt;&quot; встретил ссылку на &lt;a href=&quot;http://highscalability.com&quot;&gt;http://highscalability.com&lt;/a&gt; и картинку:&lt;br /&gt;&lt;img src=&quot;http://farm2.static.flickr.com/1152/1201782215_201cc40ecc_o.jpg&quot; /&gt;&lt;br /&gt;&lt;br /&gt;P.S. Наверное, это offtopic для &lt;span class=&apos;ljuser&apos; lj:user=&apos;multithreading&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://community.livejournal.com/multithreading/profile&apos;&gt;&lt;img src=&apos;http://p-stat.livejournal.com/img/community.gif&apos; alt=&apos;[info]&apos; width=&apos;16&apos; height=&apos;16&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://community.livejournal.com/multithreading/&apos;&gt;&lt;b&gt;multithreading&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; (надеюсь, полезный:) - а где такое обсуждают?</description>
  <comments>http://community.livejournal.com/multithreading/6358.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>smesh</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/6132.html</guid>
  <pubDate>Mon, 12 Nov 2007 20:31:45 GMT</pubDate>
  <title>Memory Models</title>
  <link>http://community.livejournal.com/multithreading/6132.html</link>
  <description>&quot;&lt;a href=&quot;http://www.bluebytesoftware.com/blog/2007/11/10/CLR20MemoryModel.aspx&quot;&gt;CLR 2.0 memory model&lt;/a&gt;&quot; - it was quite interesting to know that CLR&apos;s memory model is not specified yet but Java&apos;s is.</description>
  <comments>http://community.livejournal.com/multithreading/6132.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>smesh</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/5808.html</guid>
  <pubDate>Mon, 08 Oct 2007 22:40:27 GMT</pubDate>
  <title>Google And IBM Partner To Push Cloud Computing</title>
  <link>http://community.livejournal.com/multithreading/5808.html</link>
  <description>&lt;a href=&quot;http://news.google.com/?ned=us&amp;ncl=1121846917&quot;&gt;http://news.google.com/?ned=us&amp;ncl=1121846917&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Упомянутые в предыдущем посте &quot;Cluster Computing and MapReduce Mini Lecture Series&quot; - часть этой инициативы. Все курсы находятся здесь:&lt;br /&gt;- &lt;a href=&quot;http://code.google.com/edu/content/parallel.html&quot;&gt;http://code.google.com/edu/content/parallel.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Где раздобыть железа не университетам - пока не ясно.&lt;br /&gt;Насколько &lt;a href=&quot;http://aws.amazon.com/ec2&quot;&gt;Amazon EC2&lt;/a&gt; может подойти?&lt;br /&gt;&lt;br /&gt;P.S. Не эта ли инициатива помогла акцииям Google подрости на днях?</description>
  <comments>http://community.livejournal.com/multithreading/5808.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>smesh</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/5580.html</guid>
  <pubDate>Mon, 08 Oct 2007 20:11:54 GMT</pubDate>
  <title>Obliq: A Language with Distributed Scope - by DEC, 1994</title>
  <link>http://community.livejournal.com/multithreading/5580.html</link>
  <description>&lt;a href=&quot;http://gatekeeper.dec.com/pub/DEC/SRC/research-reports/abstracts/src-rr-122.html&quot;&gt;http://gatekeeper.dec.com/pub/DEC/SRC/research-reports/abstracts/src-rr-122.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Interesting to read in general and about not using reentrant mutexes in particular:&lt;br /&gt;&lt;blockquote&gt;A way to satisfy condition (2) is to use reentrant mutexes, that is, mutexes that do not deadlock when re-locked by the “same” thread (for example, see [Forté 1994]). On one hand, this solution is too liberal, because it allows a method to call an arbitrary method of a different object, which then can call back a method of the present object without deadlocking. This goes well beyond our simple desire that a method should be allowed to call its siblings: it may make objects vulnerable to unexpected activations of their own methods, when other methods have not yet finished reestablishing the object’s invariants. On the other hand, this solution may also be too restrictive because the notion of “same” thread is normally restricted to an address space. If we want to consider control threads as extending across sites, then an implementation of reentrant locks might not behave appropriately.&lt;br /&gt;&lt;br /&gt;We solve this dilemma by adopting an intermediate locking strategy, which we call self serialization, based on the notion of self-inflicted operations described in section 3.4. Serialized objects have an implicit associated mutex, called the object mutex. An object mutex serializes the execution of selection, update, cloning, and delegation operations on its host object. Here are the simple rules of acquisition of these object mutexes:&lt;ul&gt;&lt;li&gt;External operations always acquire the mutex of an object, and release it on completion.&lt;/li&gt;&lt;li&gt;Self-inflicted operations never acquire the mutex of their object.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;</description>
  <comments>http://community.livejournal.com/multithreading/5580.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>smesh</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/5354.html</guid>
  <pubDate>Mon, 08 Oct 2007 18:57:30 GMT</pubDate>
  <title>Cluster Computing and MapReduce - video course</title>
  <link>http://community.livejournal.com/multithreading/5354.html</link>
  <description>&lt;a href=&quot;http://code.google.com/edu/content/submissions/mapreduce-minilecture/listing.html&quot;&gt;http://code.google.com/edu/content/submissions/mapreduce-minilecture/listing.html&lt;/a&gt;</description>
  <comments>http://community.livejournal.com/multithreading/5354.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>smesh</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/4920.html</guid>
  <pubDate>Tue, 25 Sep 2007 00:38:04 GMT</pubDate>
  <title>Recent video talks (for about an hour each)</title>
  <link>http://community.livejournal.com/multithreading/4920.html</link>
  <description>&quot;Machine Architecture&quot; by Herb Sutter:&lt;br /&gt;- &lt;a href=&quot;http://herbsutter.spaces.live.com/Blog/cns!2D4327CC297151BB!304.entry&quot;&gt;http://herbsutter.spaces.live.com/Blog/cns!2D4327CC297151BB!304.entry&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&quot;(VC++ Safe Libraries and More)&quot; and &quot;Understanding Exceptions and When/How to Handle Them&quot; by VC++ People:&lt;br /&gt;- &lt;a href=&quot;http://blogs.msdn.com/vcblog/archive/2007/09/21/channel-9-ale-contenti-and-louis-lafreniere-understanding-exceptions-and-when-how-to-handle-them.aspx&quot;&gt;http://blogs.msdn.com/vcblog/archive/2007/09/21/channel-9-ale-contenti-and-louis-lafreniere-understanding-exceptions-and-when-how-to-handle-them.aspx&lt;/a&gt;</description>
  <comments>http://community.livejournal.com/multithreading/4920.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>smesh</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/4822.html</guid>
  <pubDate>Wed, 12 Sep 2007 19:21:22 GMT</pubDate>
  <title>Lock recursion is usually a bad idea</title>
  <link>http://community.livejournal.com/multithreading/4822.html</link>
  <description>&lt;a href=&quot;http://www.bluebytesoftware.com/blog/2007/09/12/ConditionVariablesAndLockRecursion.aspx&quot;&gt;http://www.bluebytesoftware.com/blog/2007/09/12/ConditionVariablesAndLockRecursion.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;JD&amp;gt; Sadly, I guess I&apos;m only about 10 years too late...&lt;br /&gt;PL&amp;gt; The really sad part is that all this was common knowledge even 10 years ago:&lt;br /&gt;PL&amp;gt; &lt;a href=&quot;http://groups.google.com/group/comp.programming.threads/msg/9ed3cc6318a8f68d&quot;&gt;http://groups.google.com/group/comp.programming.threads/msg/9ed3cc6318a8f68d&lt;/a&gt;</description>
  <comments>http://community.livejournal.com/multithreading/4822.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>smesh</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/4354.html</guid>
  <pubDate>Tue, 04 Sep 2007 07:40:22 GMT</pubDate>
  <title>[Google TechTalks] Concurrency and Message Passing in Newsqueak</title>
  <link>http://community.livejournal.com/multithreading/4354.html</link>
  <description>&quot;&lt;i&gt;A state is (PC, stack). A concurrent program is (PC, stack)+.&lt;/i&gt;&quot; - просто и доходчиво излагает &lt;a href=&quot;http://en.wikipedia.org/wiki/Rob_Pike&quot;&gt;Rob Pike&lt;/a&gt;. И email у него простой - r@google.com. :)&lt;br /&gt;&lt;br /&gt;&lt;lj-embed id=&quot;1&quot; /&gt;</description>
  <comments>http://community.livejournal.com/multithreading/4354.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>smesh</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/4263.html</guid>
  <pubDate>Fri, 08 Jun 2007 23:19:14 GMT</pubDate>
  <title>LockSmith - concurrency-oriented refactorings</title>
  <link>http://community.livejournal.com/multithreading/4263.html</link>
  <description>&lt;p&gt;From http://binkley.blogspot.com/2007/06/all-dancing-all-singing-locksmith.html&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;i&gt;This is a list of features which made me look twice:&lt;/i&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Split Lock&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Merge Locks&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Make Class Thread-Safe&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Convert Field to Atomic&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Convert Field to ThreadLocal&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Lock Call-Sites of Method&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Convert Simple Lock to Read-Write Lock&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Convert Read-Write Lock to Simple Lock&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Convert Synchronization Field to Lock&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Split Critical Section&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Shrink Critical Section&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Merge Critical Sections&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; P.S. &quot;made me look twice&quot; - how to translate this into Russian?</description>
  <comments>http://community.livejournal.com/multithreading/4263.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>smesh</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/4027.html</guid>
  <pubDate>Mon, 23 Apr 2007 06:46:09 GMT</pubDate>
  <title>Multithreading book suggestion</title>
  <link>http://community.livejournal.com/multithreading/4027.html</link>
  <description>Hello lot,&lt;br /&gt;Can you suggest some comprehensive multi threading reference book in English with more Windows then POSIX orientation?&lt;br /&gt;&lt;br /&gt;Thank you in advance.</description>
  <comments>http://community.livejournal.com/multithreading/4027.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>lbaruch</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/3685.html</guid>
  <pubDate>Thu, 19 Apr 2007 13:42:34 GMT</pubDate>
  <title>Thinking Parallel</title>
  <link>http://community.livejournal.com/multithreading/3685.html</link>
  <description>Here is an interesting blog about parallel programming: &lt;a href=&quot;http://www.thinkingparallel.com&quot;&gt;Thinking Parallel&lt;/a&gt;</description>
  <comments>http://community.livejournal.com/multithreading/3685.html</comments>
  <category>blog</category>
  <lj:security>public</lj:security>
  <lj:poster>voidbent</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/3528.html</guid>
  <pubDate>Wed, 14 Mar 2007 10:09:58 GMT</pubDate>
  <title>Transactions in Windows Vista.</title>
  <link>http://community.livejournal.com/multithreading/3528.html</link>
  <description>&lt;a href=&quot;http://www.codeproject.com/useritems/VistaKTM.asp&quot;&gt;Here&lt;/a&gt; is an example of using transactions to deal with registry and NTFS in Windows Vista on codeproject. Article called &quot;Vista KTM: Transaction Management in Vista and Beyond ...&quot; By &lt;a href=&quot;http://www.codeproject.com/script/profile/whos_who.asp?vt=arts&amp;amp;id=240&quot;&gt;Warren Stevens&lt;/a&gt;.</description>
  <comments>http://community.livejournal.com/multithreading/3528.html</comments>
  <category>transactions</category>
  <lj:security>public</lj:security>
  <lj:poster>voidbent</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/3260.html</guid>
  <pubDate>Sat, 03 Mar 2007 20:59:43 GMT</pubDate>
  <title>Transacted API in Windows Vista.</title>
  <link>http://community.livejournal.com/multithreading/3260.html</link>
  <description>At very long last Microsoft has been added routines to WinAPI to deal with registry and file system with using of transactions. New transaction API requires Windows Vista or Windows Server &quot;Longhorn&quot;. For example one can see &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/aa965886.aspx&quot;&gt;RegOpenKeyTransacted routine in MSDN&lt;/a&gt;. &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/aa964936.aspx&quot;&gt;Here is list&lt;/a&gt; of transacted functions to work with file system. In my opinion such functions should be added from the beginning at least for registry.</description>
  <comments>http://community.livejournal.com/multithreading/3260.html</comments>
  <category>transactions</category>
  <lj:security>public</lj:security>
  <lj:poster>voidbent</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/2888.html</guid>
  <pubDate>Fri, 15 Dec 2006 19:55:02 GMT</pubDate>
  <title>ScalPL</title>
  <link>http://community.livejournal.com/multithreading/2888.html</link>
  <description>I&apos;ll try to write something on it to wake up some interest...&lt;br /&gt;&lt;br /&gt;ScalPL is a modern programming language thought for writing readable concurrent programs. It doesn&apos;t mater whether it&apos;s on shared memory, clusters or grid - the program language only describes the flow of the program and the dependencies between sequential (atomic) processes. It will be the task of a compiler to decide how the synchronization is done (mutex, sockets, ...) or how the data is shared.&lt;br /&gt;&lt;br /&gt;As an analogy, its creator, David DiNucci tells that at the beginning the programming was thought to be sequential, and instructions were written from up to down (remember any assembler program...). Not too late, came program languages with specific syntax for loops, breaking the &lt;em&gt;sequential&lt;/em&gt; old style. The programmers added a new dimension to the programs: the indentation. David adds even another dimension to the programs: a dependency layout between tasks and shared data.&lt;br /&gt;&lt;br /&gt;After reading for months his work, I think I understand quite well ScalPL. But I must admit, that the first weeks it was very difficult to me to understand his article &lt;a href=&quot;http://www.elepar.com/Reports/ScalPL.pdf&quot;&gt;Introduction to ScalPL and L23&lt;/a&gt;. Now I think that I cannot think of almost any limit programming with ScalPL - but it requires adapting the programs to its syntax; it&apos;s not strange that we are already used to mutexes, semaphores, signals, mixed with sequential programs running on multiple threads.&lt;br /&gt;&lt;br /&gt;ScalPL is based on Software Cabling; SC is based on F-Nets. I recommend you reading the following, where each complements each other:&lt;br /&gt;&lt;a href=&quot;http://www.elepar.com/Reports/ScalPL.pdf&quot;&gt;Introduction to ScalPL and L23&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.elepar.com/Reports/towards.pdf&quot;&gt;Towards a Max Benefit, Min Cost, Parallel/Grid Programming Model&lt;/a&gt; - Slides, but very helpful.&lt;br /&gt;&lt;a href=&quot;http://www.elepar.com/Reports/pdse97.pdf&quot;&gt;Tolerant (Parallel) Programming with F-Nets and Software Cabling &lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.elepar.com/Passworded/tsefnets.pdf&quot;&gt;F-Nets and Software Cabling: Deriving a Formal Model and Language for Portable Parallel Programming&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://scholar.google.com&quot;&gt;Google scholar&lt;/a&gt; may help finding more articles, but I think only David DiNucci wrote about that. Having an IEEE account will help finding some few more interesting papers to read.&lt;br /&gt;&lt;br /&gt;The bad point of all that is that there isn&apos;t any &lt;em&gt;editor&lt;/em&gt; for ScalPL, neither is a compiler. Amazed by the possibilities of the language, I decided to start writting a compiler of a text-written scalpl. It&apos;s not a big success, but I can almost run a very simple subset of the language. I don&apos;t have many time to code, but I think often on it - so I hope I can improve it from time to time. Once it&apos;s usable for anyone, I&apos;ll make a post &lt;em&gt;at least&lt;/em&gt; here.&lt;br /&gt;&lt;br /&gt;Ah, a new mail list has been created for discussing on ScalPL: scalpl@yahoogroups.com (scalpl-subscribe@yahoogroups.com iirc for getting in)</description>
  <comments>http://community.livejournal.com/multithreading/2888.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>viric</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/2739.html</guid>
  <pubDate>Fri, 15 Dec 2006 17:53:57 GMT</pubDate>
  <title>Multithreading and &quot;volatile&quot;</title>
  <link>http://community.livejournal.com/multithreading/2739.html</link>
  <description>I never had in mind that I should use volatile in certain cases...&lt;br /&gt;&lt;br /&gt;Here is a nice article from DrDobb&apos;s portal on that: &lt;a href=&quot;http://www.ddj.com/dept/cpp/184403766&quot;&gt;http://www.ddj.com/dept/cpp/184403766&lt;/a&gt;</description>
  <comments>http://community.livejournal.com/multithreading/2739.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>viric</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/2340.html</guid>
  <pubDate>Thu, 09 Nov 2006 14:03:41 GMT</pubDate>
  <title>Deadlocks handling</title>
  <link>http://community.livejournal.com/multithreading/2340.html</link>
  <description>Igor Odintcov wrote about deadlocks handling in his book &lt;a href=&quot;http://janis.zagorskyline.com/other/Odin/Programming/&quot;&gt;&quot;Professional programming. System approach&quot;&lt;/a&gt;. Here is my free translation from russian:&lt;br /&gt;&lt;br /&gt;There are four necessary conditions for deadlock to appear:&lt;br /&gt;&lt;br /&gt;1. Condition of mutal execution (threads require exclusive resource ownership).&lt;br /&gt;2. Condition of waiting (threads hold some owned resource and wait to own other one).&lt;br /&gt;3. Condition of undistributed resources (resource cannot be taken away while it will not be released by owner thread).&lt;br /&gt;4. Condition of cycled waiting (There are circle of threads where one thread holds one or more resources which is required by next one).&lt;br /&gt;&lt;br /&gt;So that there are four main methods to operate with deadlocks:&lt;br /&gt;1. Full ignorance of a problem (&quot;straus algorithm&quot;). Real operation systems don&apos;t strive against deadlocks because it is quite enough of resources.&lt;br /&gt;&lt;br /&gt;2. Deadlock prevention. To prevent deadlock it is enough to break at least one condition.&lt;br /&gt;- First condition is natural for some kind of resources (such as input\output devices) and so that this condition cannot be broken in some cases.&lt;br /&gt;- To broke second condition a thread has to acquire all resources at once. Effectiveness of a system can become much worse.&lt;br /&gt;- To broke third condition thread has to release all held resources if it is refused to acquire some more resources and try to acquire this resources after a time. But the most part of the work can be lost in this case.&lt;br /&gt;- To broke fourth condition one has to introduce linear order of resources, and allow holding resources only in order where no deadlocks possible. This method requires some more additional expenditure to store information about resource types and order of resource instances.&lt;br /&gt;&lt;br /&gt;3. Deadlock avoidance. This method provides rational resources acquiring by rational rules. The most known algorithm of deadlock avoidance is algorithm of banker.&lt;br /&gt;- Algorithm imitates banker actions which has source of capital, grants a loans and receive a payments. This algorithm is proposed by Deykstra.&lt;br /&gt;- The system state is stable if it can process all tasks of all users in finite quantity of time. The system will process only those tasks which will leave system in stable state.&lt;br /&gt;- There are two serious limitation of this method: each thread has to know how many resources it need beforehand and in each moment of a time holds only one resource. This algorithm is inapplicable on practice because of inefficiency (thread has constantly recalculate quantity of required resources).&lt;br /&gt;&lt;br /&gt;4. Deadlock detection. This method supposes that deadlock can happen, detect deadlocked threads and resources and try to resolve this situation.</description>
  <comments>http://community.livejournal.com/multithreading/2340.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>voidbent</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/2259.html</guid>
  <pubDate>Mon, 23 Oct 2006 15:27:42 GMT</pubDate>
  <title>lwsync library update.</title>
  <link>http://community.livejournal.com/multithreading/2259.html</link>
  <description>I have updated my lwsync library. Monitor Waiting Cancellations feature was added.&lt;br /&gt;Also it was reviewed and approwed on Code Project, so new article location is &lt;a href=&quot;http://www.codeproject.com/threads/lwsync.asp&quot;&gt;here&lt;/a&gt;. Note that it still request for comments or proposals.</description>
  <comments>http://community.livejournal.com/multithreading/2259.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>voidbent</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/1824.html</guid>
  <pubDate>Fri, 13 Oct 2006 09:10:45 GMT</pubDate>
  <title>New synchronization stuff for Windows Vista.</title>
  <link>http://community.livejournal.com/multithreading/1824.html</link>
  <description>I have found &lt;a href=&quot;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/synchronization_functions.asp&quot;&gt;here in MSDN&lt;/a&gt; a new synchronization stuff which will be available in Windows Vista and Windows Server &quot;Longhorn&quot;.&lt;br /&gt;&lt;br /&gt;There will be added the following functionality:&lt;br /&gt;- Read/Write Lock and Condition Variables (at long last!). Condition variable will have an ability to sleep with critical section or RWLock object.&lt;br /&gt;- Some Init Once stuff.&lt;br /&gt;- Some additional Interlocked functions such as InterlockedBitTestAndSet\Reset and InterlockedCompare64ExchangeAcquire128&lt;br /&gt;- Private Namespaces.</description>
  <comments>http://community.livejournal.com/multithreading/1824.html</comments>
  <category>synchronization</category>
  <lj:security>public</lj:security>
  <lj:poster>voidbent</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/1608.html</guid>
  <pubDate>Mon, 09 Oct 2006 11:18:34 GMT</pubDate>
  <title>pthread in Win32</title>
  <link>http://community.livejournal.com/multithreading/1608.html</link>
  <description>&lt;a href=&quot;http://ftp-stud.fht-esslingen.de/pub/Mirrors/sourceware.org/pthreads-win32/&quot;&gt;There&lt;/a&gt; is an implementation of pthread interface for Win32 platform.&lt;br /&gt;&lt;br /&gt;It will be very interesting to test if I can cancel some thread blocked with system implementation of accept() or read() with Win32 version of pthread_cancel()</description>
  <comments>http://community.livejournal.com/multithreading/1608.html</comments>
  <category>pthread</category>
  <category>sockets</category>
  <lj:security>public</lj:security>
  <lj:poster>voidbent</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/1356.html</guid>
  <pubDate>Mon, 09 Oct 2006 11:10:49 GMT</pubDate>
  <title>Raw sockets in Win32</title>
  <link>http://community.livejournal.com/multithreading/1356.html</link>
  <description>Я наконец-то понял в чём прикол с сокетами.&lt;br /&gt;Наконец то до меня дошло кто в чём промахнулся :)&lt;br /&gt;&lt;br /&gt;В POSIX-е если сокет выполняет какую нибудь блокирующую операцию то для того что-бы эту операцию прервать, можно воспользоваться из другого потока например pthread_cancel (культурный способ) или на крайний случай pthread_kill (это не аналог TerminateThread, у потока ещё остаются шансы).&lt;br /&gt;&lt;br /&gt;В винде первый сокетный интерфейс оставили POSIX-ным, а интерфейс потоков сделали полностью свой. И &quot;закенселить&quot; поток, который блокирован например accept-ом, невозможно.&lt;br /&gt;&lt;br /&gt;Можно конечно в винде некультурно закрыть сокет через closesocket - но это приведёт к race condition-ам.&lt;br /&gt;&lt;br /&gt;И что получается в Win32 без winsock2 невозможно культурно разблокировать поток работающий с сокетами?</description>
  <comments>http://community.livejournal.com/multithreading/1356.html</comments>
  <category>sockets</category>
  <category>network</category>
  <lj:security>public</lj:security>
  <lj:poster>voidbent</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/1218.html</guid>
  <pubDate>Tue, 26 Sep 2006 08:20:25 GMT</pubDate>
  <title>stress-flow</title>
  <link>http://community.livejournal.com/multithreading/1218.html</link>
  <description>&lt;a href=&quot;http://www.stressflow.com/&quot;&gt;StressFlow&lt;/a&gt; concept.&lt;br /&gt;&lt;br /&gt;&lt;q&gt;The goal of StressFlow is to provide a new, universal, versatile parallel programming technique for all parallel and distributed platforms.  StressFlow allows unprecedented ease of true parallel programming as well as smooth transitioning from control-flow to superior, unprecedented data-flow type ideas.&lt;/q&gt;</description>
  <comments>http://community.livejournal.com/multithreading/1218.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>voidbent</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/888.html</guid>
  <pubDate>Fri, 22 Sep 2006 10:11:33 GMT</pubDate>
  <title>Applying lock and wait synchronization in C++</title>
  <link>http://community.livejournal.com/multithreading/888.html</link>
  <description>RFC.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.codeproject.com/useritems/lwsync.asp&quot;&gt;Here&lt;/a&gt; is my article about applying lock and wait synchronization in C++. Two patterns are implemented: critical resource and monitor. Critical resource allows one to automatically synchronize all accesses to some object. Monitor allows one to wait until object becomes in some defined state. State is can be determinated by predicate.</description>
  <comments>http://community.livejournal.com/multithreading/888.html</comments>
  <category>c++</category>
  <lj:security>public</lj:security>
  <lj:poster>voidbent</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/720.html</guid>
  <pubDate>Fri, 22 Sep 2006 09:32:41 GMT</pubDate>
  <title>Books</title>
  <link>http://community.livejournal.com/multithreading/720.html</link>
  <description>The recommended books to start are: 
Doug Lea, 
&lt;a href=&quot;http://java.sun.com/docs/books/cp/&quot;&gt;&quot;Concurrent Programming in Java™: Design Principles and Patterns&quot;&lt;/a&gt;, 
(&lt;a href=&quot;http://g.oswego.edu/dl/cpj/&quot;&gt;Lea&apos;s online supplement page&lt;/a&gt;).
Edition 3 coming soon.

&lt;a href=&quot;http://jcip.net/&quot;&gt;Java Concurrency in Practice&lt;/a&gt;
by 
&lt;a href=&quot;http://www.nofluffjuststuff.com/speaker_view.jsp?speakerId=24&quot;&gt;Brian Goetz&lt;/a&gt;
with &lt;a href=&quot;http://www.awprofessional.com/authors/bio.asp?a=a0b29c5e-59ad-4aa9-94cc-50bf66e3c477&amp;amp;rl=1&quot;&gt;Tim Peierls&lt;/a&gt;, 
&lt;a href=&quot;http://www.spaconference.org/cgi-bin/wiki.pl/?browse=JoshuaBloch&amp;amp;type=bio&quot;&gt;Joshua Bloch&lt;/a&gt;, 
&lt;a href=&quot;http://www.awprofessional.com/authors/bio.asp?a=21c966fa-93e7-475d-8ce1-09914bc59c15&quot;&gt;Joseph Bowbeer&lt;/a&gt;, 
&lt;a href=&quot;http://www.awprofessional.com/authors/bio.asp?a=b7775c59-f353-4a75-8a32-189e3421b8a1&amp;amp;rl=1&quot;&gt;David Holmes&lt;/a&gt; and 
&lt;a href=&quot;http://gee.cs.oswego.edu/&quot;&gt;Doug Lea&lt;/a&gt;.
(sorry, couldn&apos;t find better links to the gods&apos; homepages).&lt;br /&gt;
&lt;br /&gt;
Most of the Java principles will work for .NET, you know why. Though the memory models differ, especially after Java 1.5.
(if you wish, please read &lt;a href=&quot;http://www-128.ibm.com/developerworks/java/library/j-jtp03304/#3.2&quot;&gt;Does this fix the double-checked locking problem?&lt;/a&gt;,
thanks &lt;span class=&apos;ljuser&apos; lj:user=&apos;upstartn&apos; style=&apos;white-space: nowrap;&apos;&gt;&lt;a href=&apos;http://upstartn.livejournal.com/profile&apos;&gt;&lt;img src=&apos;http://p-stat.livejournal.com/img/userinfo.gif&apos; alt=&apos;[info]&apos; width=&apos;17&apos; height=&apos;17&apos; style=&apos;vertical-align: bottom; border: 0; padding-right: 1px;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://upstartn.livejournal.com/&apos;&gt;&lt;b&gt;upstartn&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; for &lt;a href=&quot;http://upstartn.livejournal.com/60089.html&quot;&gt;links&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
For not-so-easy C++, see &lt;a href=&quot;http://boost.org/doc/html/threads.html&quot;&gt;Boost.Threads&lt;/a&gt; library.</description>
  <comments>http://community.livejournal.com/multithreading/720.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>singalen</lj:poster>
</item>
<item>
  <guid isPermaLink='true'>http://community.livejournal.com/multithreading/285.html</guid>
  <pubDate>Fri, 22 Sep 2006 08:45:14 GMT</pubDate>
  <title>Multithreaded programming community is created.</title>
  <link>http://community.livejournal.com/multithreading/285.html</link>
  <description>New community about multithreaded programming is created.&lt;br /&gt;You are welcome to join it.</description>
  <comments>http://community.livejournal.com/multithreading/285.html</comments>
  <lj:security>public</lj:security>
  <lj:poster>voidbent</lj:poster>
</item>
</channel>
</rss>
