<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: thread code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 29 Aug 2008 19:29:35 GMT</pubDate>
    <description>DZone Snippets: thread code</description>
    <item>
      <title>Interprocess synchronization (safe threading)</title>
      <link>http://snippets.dzone.com/posts/show/3950</link>
      <description>Three ways for safe threading:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Threading;&lt;br /&gt;&lt;br /&gt;namespace ConsoleApplication12&lt;br /&gt;{&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;        static object thisLock = new object();&lt;br /&gt;        static int z = 0;&lt;br /&gt;        private static void ThrStart()&lt;br /&gt;        {&lt;br /&gt;            for (int i = 0; i &lt; 10000; i++)&lt;br /&gt;            {&lt;br /&gt;                lock (thisLock)&lt;br /&gt;                {&lt;br /&gt;                    z++;&lt;br /&gt;                    Console.WriteLine(z);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static void ThrStart2()&lt;br /&gt;        {&lt;br /&gt;            for (int i = 0; i &lt; 10000; i++)&lt;br /&gt;            {&lt;br /&gt;                Monitor.Enter(thisLock);&lt;br /&gt;                z++;&lt;br /&gt;                Console.WriteLine(z);&lt;br /&gt;                Monitor.Exit(thisLock);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        static Mutex mutex = new Mutex();&lt;br /&gt;        private static void ThrStart3()&lt;br /&gt;        {&lt;br /&gt;            for (int i = 0; i &lt; 10000; i++)&lt;br /&gt;            {&lt;br /&gt;                mutex.WaitOne();&lt;br /&gt;                z++;&lt;br /&gt;                Console.WriteLine(z);&lt;br /&gt;                mutex.ReleaseMutex();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            Thread t1 = new Thread(new ThreadStart(ThrStart));&lt;br /&gt;            Thread t2 = new Thread(new ThreadStart(ThrStart));&lt;br /&gt;            t1.Start();&lt;br /&gt;            t2.Start();&lt;br /&gt;            t1.Join();&lt;br /&gt;            t2.Join();&lt;br /&gt;&lt;br /&gt;            t1 = new Thread(new ThreadStart(ThrStart2));&lt;br /&gt;            t2 = new Thread(new ThreadStart(ThrStart2));&lt;br /&gt;            t1.Start();&lt;br /&gt;            t2.Start();&lt;br /&gt;            t1.Join();&lt;br /&gt;            t2.Join();&lt;br /&gt;&lt;br /&gt;            t1 = new Thread(new ThreadStart(ThrStart3));&lt;br /&gt;            t2 = new Thread(new ThreadStart(ThrStart3));&lt;br /&gt;            t1.Start();&lt;br /&gt;            t2.Start();&lt;br /&gt;            t1.Join();&lt;br /&gt;            t2.Join();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 02 May 2007 21:20:27 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3950</guid>
      <author>mstampar (Miroslav Stampar)</author>
    </item>
    <item>
      <title>Parametrized thread start</title>
      <link>http://snippets.dzone.com/posts/show/3887</link>
      <description>&lt;code&gt;&lt;br /&gt;   Thread t = new Thread (new ParameterizedThreadStart(FetchUrl));&lt;br /&gt;    t.Start (www.google.com);&lt;br /&gt; &lt;br /&gt;....&lt;br /&gt; &lt;br /&gt;static void FetchUrl(object _url)&lt;br /&gt;{&lt;br /&gt;    string url = (string)_url;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 24 Apr 2007 22:39:31 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3887</guid>
      <author>mstampar (Miroslav Stampar)</author>
    </item>
    <item>
      <title>Safe update of windows control from other threads</title>
      <link>http://snippets.dzone.com/posts/show/3886</link>
      <description>&lt;code&gt;&lt;br /&gt;        delegate void UpdateReportCallback(string text);&lt;br /&gt;        private void UpdateReport(string message)&lt;br /&gt;        {&lt;br /&gt;            // InvokeRequired required compares the thread ID of the&lt;br /&gt;            // calling thread to the thread ID of the creating thread.&lt;br /&gt;            // If these threads are different, it returns true.&lt;br /&gt;            if (this.textBoxReport.InvokeRequired)&lt;br /&gt;            {&lt;br /&gt;                UpdateReportCallback d = new UpdateReportCallback(UpdateReport);&lt;br /&gt;                this.Invoke(d, new object[] { message });&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                textBoxReport.Text = message + System.Environment.NewLine + textBoxReport.Text;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 24 Apr 2007 22:38:09 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3886</guid>
      <author>mstampar (Miroslav Stampar)</author>
    </item>
  </channel>
</rss>
