<?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[WaitForSingleObject]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage zur Prozess/Threadsynchronisation unter Windows. Ich möchte einen critischen Bereich vor gleichzeitigem Zugriff mehrerer Threads/Prozesse schützten. Ich habe dies mittels Mutex und der Funktion WaitForSingleObject() gemacht.</p>
<pre><code>MutexReturn = WaitForSingleObject(g_MutexHandle, CMD_TIMEOUT);

if(MutexReturn != WAIT_OBJECT_0)
{
    return -1; 
}

// critical section ....

ReleaseMutex(g_MutexHandle);
</code></pre>
<p>Auf Unixsystemen werden mehrere Prosesse/Threads, die auf einen Mutex warten ge-queued. Es wird demnach die ursprüngliche Aufrufreihenfolge der Prozesse die auf den Bereich zugreifen wollen, der durch den Mutex geschützt wird, eingehalten. Wie ist das unter Windows wenn man es so macht wie das Codebeispiel es zeigt? Oder gibt es andere Mechanismen die ein queueing von Prozessen unterstützen?</p>
<p>Gruß<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198268/waitforsingleobject</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 03:52:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198268.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Nov 2007 09:25:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WaitForSingleObject on Tue, 20 Nov 2007 09:25:44 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage zur Prozess/Threadsynchronisation unter Windows. Ich möchte einen critischen Bereich vor gleichzeitigem Zugriff mehrerer Threads/Prozesse schützten. Ich habe dies mittels Mutex und der Funktion WaitForSingleObject() gemacht.</p>
<pre><code>MutexReturn = WaitForSingleObject(g_MutexHandle, CMD_TIMEOUT);

if(MutexReturn != WAIT_OBJECT_0)
{
    return -1; 
}

// critical section ....

ReleaseMutex(g_MutexHandle);
</code></pre>
<p>Auf Unixsystemen werden mehrere Prosesse/Threads, die auf einen Mutex warten ge-queued. Es wird demnach die ursprüngliche Aufrufreihenfolge der Prozesse die auf den Bereich zugreifen wollen, der durch den Mutex geschützt wird, eingehalten. Wie ist das unter Windows wenn man es so macht wie das Codebeispiel es zeigt? Oder gibt es andere Mechanismen die ein queueing von Prozessen unterstützen?</p>
<p>Gruß<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1406388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1406388</guid><dc:creator><![CDATA[Walliworld]]></dc:creator><pubDate>Tue, 20 Nov 2007 09:25:44 GMT</pubDate></item><item><title><![CDATA[Reply to WaitForSingleObject on Tue, 20 Nov 2007 09:43:56 GMT]]></title><description><![CDATA[<p>ich weis nur das man mit EnterCriticalSection() und dem Leave dazu in teufels küche kommt, weil genau an dieser stelle Windows seit Windows Server 2003 die reihenfolge der threads völlig ignoriert (unter XP scheint es noch eine art first come first server zu geben aber bestätigt wird das nicht, unter vista kommt meist 90% der fälle der thread gleich wieder dran der das leave zuvor aufgerufen hat)</p>
<p>ich habe mal gelesen das meist der thread mit der &quot;optimalsten&quot; zugriffschance den &quot;zuschlag&quot; erhält und weiterarbeiten darf. aber laut mdsn sollte man die threads über waitforsingle / waitformulti synchronisieren aber das wie haben sie leider offen gelassen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1406401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1406401</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Tue, 20 Nov 2007 09:43:56 GMT</pubDate></item><item><title><![CDATA[Reply to WaitForSingleObject on Tue, 20 Nov 2007 10:23:49 GMT]]></title><description><![CDATA[<p>Danke für die Antwort, das sieht Windows irgendwie ähnlich hmm... Naja muss ich mir was eigenes bauen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1406432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1406432</guid><dc:creator><![CDATA[Walliworld]]></dc:creator><pubDate>Tue, 20 Nov 2007 10:23:49 GMT</pubDate></item><item><title><![CDATA[Reply to WaitForSingleObject on Tue, 20 Nov 2007 10:43:51 GMT]]></title><description><![CDATA[<p>eventuell ne eigene prioritätsverwaltung, fraglich ist nur ob das sinn macht oder doch schon dafür irgendwas sinnvolles in der winapi vorhanden ist, aber das überlass ich lieber den echten spezialisten :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1406446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1406446</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Tue, 20 Nov 2007 10:43:51 GMT</pubDate></item><item><title><![CDATA[Reply to WaitForSingleObject on Wed, 21 Nov 2007 01:25:55 GMT]]></title><description><![CDATA[<p>Wenn es nur &quot;schön&quot; wäre wenn die Reihenfolge FIFO ist würde ich einfach WaitForSingleObject mit einer Mutex verwenden, da Windows AFAIK genau das macht (FIFO).</p>
<p>Wenn es wichtig ist strick dir was eigenes, oder frag bei MS an wie das im Moment mit Mutexen ist und ob es so bleiben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407060</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 21 Nov 2007 01:25:55 GMT</pubDate></item><item><title><![CDATA[Reply to WaitForSingleObject on Wed, 21 Nov 2007 10:01:32 GMT]]></title><description><![CDATA[<p>wie gesagt, mutex weis ichn nicht, aber critical sections funktionieren überhaupt nicht mehr nach FIFO prinzip</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407184</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Wed, 21 Nov 2007 10:01:32 GMT</pubDate></item><item><title><![CDATA[Reply to WaitForSingleObject on Wed, 21 Nov 2007 11:51:35 GMT]]></title><description><![CDATA[<p>Ceos schrieb:</p>
<blockquote>
<p>wie gesagt, mutex weis ichn nicht, aber critical sections funktionieren überhaupt nicht mehr nach FIFO prinzip</p>
</blockquote>
<p>Eine Critical Section ist auch kein Kernelmode Objekt, daher kann man auch nicht mit WaitForSingleObject drauf warten.<br />
Events und Mutexen sind dagegen beides Kernelmode Objekte. Wichtiger und grundlegender Unterschied.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407262</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 21 Nov 2007 11:51:35 GMT</pubDate></item><item><title><![CDATA[Reply to WaitForSingleObject on Wed, 21 Nov 2007 23:30:59 GMT]]></title><description><![CDATA[<p>gut zu wissen <sup>_</sup></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407856</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Wed, 21 Nov 2007 23:30:59 GMT</pubDate></item><item><title><![CDATA[Reply to WaitForSingleObject on Thu, 22 Nov 2007 10:18:02 GMT]]></title><description><![CDATA[<p>Mutex? Critical Section? Semaphore?<br />
Kernel-Objects? User-Mode?</p>
<p>Guckst Du: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-186523-and-highlight-is-.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-186523-and-highlight-is-.html</a><br />
Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408000</guid><dc:creator><![CDATA[Mmacher]]></dc:creator><pubDate>Thu, 22 Nov 2007 10:18:02 GMT</pubDate></item></channel></rss>