<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Warum ist das kein Deadlock?]]></title><description><![CDATA[<p>Hallo,</p>
<p>eigentlich wollte ich nur mal zum Testen einen Deadlock produzieren, aber irgendwie haut das nicht hin.<br />
Code sieht ungefähr so aus:</p>
<pre><code>extern CCriticalSection csSection;

DWORD Class::function()
{
    CSingleLock lock( &amp;csSection, false);
	while( true)
	{
           lock.Lock();
           Class::function2();
           lock.Unlock(); 
        }
}

int Class:function2()
{
    CSingleLock lock( &amp;csSection, false);
    lock.Lock();
      //mache irgendwas
    lock.Unlock();
    return 1;
}
</code></pre>
<p>Eigentlich müsste das Programm doch stehenbleiben. Ich setze ein Lock in function() und greife in function2 drauf zu -&gt; eigentlich müsste er doch dann warten, bis das Lock wieder aufgelöst wird (was hier natürlich nie passieren würde!)</p>
<p>Kann mir jmd. meinen Denkfehler erklären?<br />
THX schon mal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/171892/warum-ist-das-kein-deadlock</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 22:27:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171892.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Jan 2007 13:31:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum ist das kein Deadlock? on Tue, 30 Jan 2007 13:31:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>eigentlich wollte ich nur mal zum Testen einen Deadlock produzieren, aber irgendwie haut das nicht hin.<br />
Code sieht ungefähr so aus:</p>
<pre><code>extern CCriticalSection csSection;

DWORD Class::function()
{
    CSingleLock lock( &amp;csSection, false);
	while( true)
	{
           lock.Lock();
           Class::function2();
           lock.Unlock(); 
        }
}

int Class:function2()
{
    CSingleLock lock( &amp;csSection, false);
    lock.Lock();
      //mache irgendwas
    lock.Unlock();
    return 1;
}
</code></pre>
<p>Eigentlich müsste das Programm doch stehenbleiben. Ich setze ein Lock in function() und greife in function2 drauf zu -&gt; eigentlich müsste er doch dann warten, bis das Lock wieder aufgelöst wird (was hier natürlich nie passieren würde!)</p>
<p>Kann mir jmd. meinen Denkfehler erklären?<br />
THX schon mal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1219793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1219793</guid><dc:creator><![CDATA[Bum]]></dc:creator><pubDate>Tue, 30 Jan 2007 13:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist das kein Deadlock? on Tue, 30 Jan 2007 14:41:36 GMT]]></title><description><![CDATA[<p>Warum ist die CCriticalSection extern bei dir?<br />
Bei mir bringt das einen Deadlock:</p>
<p>CCriticalSection csSection;</p>
<pre><code class="language-cpp">int function2()
{
    CSingleLock lock( &amp;csSection, false);
    lock.Lock();
      //mache irgendwas
    lock.Unlock();
    return 1;
}

DWORD function()
{
    CSingleLock lock( &amp;csSection, false);
    while( true)
    {
           lock.Lock();
           function2();
           lock.Unlock();
        }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1219863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1219863</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Tue, 30 Jan 2007 14:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist das kein Deadlock? on Tue, 30 Jan 2007 15:13:17 GMT]]></title><description><![CDATA[<p>Ne CRITICAL_SECTION unter Windows ist reentrant, deswegen geht das.<br />
Soll heissen: das geht &quot;by design&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1219898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1219898</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 30 Jan 2007 15:13:17 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist das kein Deadlock? on Tue, 30 Jan 2007 15:27:47 GMT]]></title><description><![CDATA[<p>Erstmal danke für die Antworten!</p>
<p>Hab das jetzt mal ohne extern gemacht, geht aber auch nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Was meinst du mit &quot;by design&quot;? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1219921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1219921</guid><dc:creator><![CDATA[Bum]]></dc:creator><pubDate>Tue, 30 Jan 2007 15:27:47 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist das kein Deadlock? on Tue, 30 Jan 2007 17:12:37 GMT]]></title><description><![CDATA[<p>Ahh, alles klar, hab's gerafft <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Bei ein und demselben Thread wirkt der Lock nicht!</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220020</guid><dc:creator><![CDATA[Bum]]></dc:creator><pubDate>Tue, 30 Jan 2007 17:12:37 GMT</pubDate></item><item><title><![CDATA[Reply to Warum ist das kein Deadlock? on Tue, 30 Jan 2007 17:15:23 GMT]]></title><description><![CDATA[<p>Ganz einfach weil aus dem selben Thread aufgerufen Criticalsection nicht blockiert! Intern wird ein Zähler mitgeführt. Das heißt für jeden Aufruf von Criticalsection musst Du auch LeaveCriticalSection aufrufen.<br />
Solange der Aufruf aus dem selben Thread passiert blockiert nie etwas.<br />
Ctricalsection soll verhindern, dass ein anderer Thread zeitgleich auf Deine Daten zugreift!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1220023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1220023</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 30 Jan 2007 17:15:23 GMT</pubDate></item></channel></rss>