<?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[Mutex ???]]></title><description><![CDATA[<p>... kann mir einer erklären was ein Mutex-Objekt ist ???<br />
Hab mir dazu schon die MSDN angeschaut, das blick ich aber irgendwie nich so ganz durch !</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/17073/mutex</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 14:44:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/17073.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 May 2003 07:52:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mutex ??? on Wed, 07 May 2003 07:52:00 GMT]]></title><description><![CDATA[<p>... kann mir einer erklären was ein Mutex-Objekt ist ???<br />
Hab mir dazu schon die MSDN angeschaut, das blick ich aber irgendwie nich so ganz durch !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/95544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/95544</guid><dc:creator><![CDATA[b4rthel]]></dc:creator><pubDate>Wed, 07 May 2003 07:52:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Wed, 07 May 2003 12:36:00 GMT]]></title><description><![CDATA[<p>ein mutex ist ein spezielles event, dass im gegensatz zum &quot;normalen&quot; event auch prozesse untereinander synchronisieren kann. normale events laufen nur processintern und dienen meist der thread-synch.</p>
<p>rocknix ///</p>
]]></description><link>https://www.c-plusplus.net/forum/post/95545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/95545</guid><dc:creator><![CDATA[RockNix]]></dc:creator><pubDate>Wed, 07 May 2003 12:36:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Wed, 07 May 2003 12:42:00 GMT]]></title><description><![CDATA[<blockquote>
<p>normale events laufen nur processintern und dienen meist der thread-synch.</p>
</blockquote>
<p>Nope. Das stimmt nicht. Events spiegeln einen bestimmten Status wieder, signalisiert oder eben nicht. Ein Mutex hingegen wird von einem Thread in Besitz genommen (auch mehrmals) und wieder zurückgegeben und dient dadurch der Synchronisation.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/95546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/95546</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Wed, 07 May 2003 12:42:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Wed, 07 May 2003 13:33:00 GMT]]></title><description><![CDATA[<p>hast du da jetzt nicht was mit der semaphore verwechselt ? ( mag mich auch irren )</p>
<p>rocknix ///</p>
]]></description><link>https://www.c-plusplus.net/forum/post/95547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/95547</guid><dc:creator><![CDATA[RockNix]]></dc:creator><pubDate>Wed, 07 May 2003 13:33:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Wed, 07 May 2003 13:46:00 GMT]]></title><description><![CDATA[<p>Mit Semaphoren kannst Du einer festgesetzten Zahl von Threads Zugriff erlauben. Das geht weder mit Mutexen noch mit Events und ich habe da auch nichts verwechselt. Oder meintest Du das noch irgendwie anders?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/95548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/95548</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Wed, 07 May 2003 13:46:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Thu, 08 May 2003 10:55:00 GMT]]></title><description><![CDATA[<p>Events sind Kernel-Objekte und alle Kernel-Objekte (Ausnahme. Critical Sections) können Prozeßübergreifend verwendet werden.</p>
<p>Ein Mutex ist wie eine Art Staffelstab. Den kann immer nur einer haben. -&gt;Der Mutext kann sich immer nur im Besitz eines Threads befinden.</p>
<p>Semaphoren benutzt man wenn man von einer Resource mehere Objekte hat (vgl. eine Kiste Äpfel). Aus der Kiste kann man sich solange was rausnehmen bis sie leer ist. Wenn die Kiste leer ist wechselt sie in den Zustand nicht signalisiert.</p>
<p>Für weitergehende Details empfehle ich ein Blick in den Richter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/95549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/95549</guid><dc:creator><![CDATA[Frank ll]]></dc:creator><pubDate>Thu, 08 May 2003 10:55:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Thu, 08 May 2003 11:18:00 GMT]]></title><description><![CDATA[<blockquote>
<p>... alle Kernel-Objekte (Ausnahme. Critical Sections) ...</p>
</blockquote>
<p>Eine CriticalSection ist <strong>kein</strong> Kernel-Object, sondern eine einfache Daten-Struktur und ist aus genau diesem Grunde nicht Process-Übergreifend verfügbar. Lediglich das in der Struktur gehaltene Event-Handle (das treffenderweise 'LockSemaphore' genannt wird <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> ) geht als Kernel-Object durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/95550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/95550</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Thu, 08 May 2003 11:18:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Thu, 08 May 2003 15:30:00 GMT]]></title><description><![CDATA[<p>Eine CriticalSection ist kein Kernel-Object, sondern eine einfache Daten-Struktur und ist aus genau diesem Grunde nicht Process-Übergreifend verfügbar. Lediglich das in der Struktur gehaltene Event-Handle (das treffenderweise 'LockSemaphore' genannt wird ) geht als Kernel-Object durch.</p>
<p>In der 3. Ausgabe von Richter &quot;MS Windows-Programmierung für Experten&quot; steht in der Auflistung der Kernel-Objekte die Critical Section mit drin. Man kann sich nun drüber streiten ob es eins ist. Im Multiprozessor-Kernel von NT sind die als Mutexe impl.</p>
<p>Fest steht sie werden benutzt um den Zugriff auf eine knappe Resource zu serialisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/95551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/95551</guid><dc:creator><![CDATA[Frank ll]]></dc:creator><pubDate>Thu, 08 May 2003 15:30:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Thu, 08 May 2003 17:56:00 GMT]]></title><description><![CDATA[<blockquote>
<p>Im Multiprozessor-Kernel von NT sind die als Mutexe impl.</p>
</blockquote>
<p>Das ist nun was völlig neues. Wo kann ich das nachlesen? Quelle bitte! Es werden doch nur die nops durch das Lock-Präfix ersetzt?</p>
<p>[edit]<br />
FYI: Das das nur eine Struktur ist, siehst Du in &lt;winnt.h&gt;.<br />
[/edit]</p>
<p>[ Dieser Beitrag wurde am 08.05.2003 um 20:02 Uhr von <strong>-King-</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/95552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/95552</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Thu, 08 May 2003 17:56:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Fri, 09 May 2003 07:49:00 GMT]]></title><description><![CDATA[<blockquote>
<p>Ein Mutex ist wie eine Art Staffelstab. Den kann immer nur einer haben. Der Mutext kann sich immer nur im Besitz eines Threads befinden.</p>
</blockquote>
<p>und wo bitte ist dann der unterschied zu einem event ?</p>
<p>rocknix ///</p>
]]></description><link>https://www.c-plusplus.net/forum/post/95553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/95553</guid><dc:creator><![CDATA[RockNix]]></dc:creator><pubDate>Fri, 09 May 2003 07:49:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Fri, 09 May 2003 08:13:00 GMT]]></title><description><![CDATA[<blockquote>
<p>und wo bitte ist dann der unterschied zu einem event ?</p>
</blockquote>
<p>Ein Event kann man nicht 'haben'. Da gibt es eben nur die zwei Zustände. Alle Threads können das Event fröhlich von dem einen in den anderen Zustand wechseln lassen.</p>
<p>Ein Mutex hingegen geht direkt in den Besitz eines Threads über. Und da bleibt es solange, bis entweder der Thread endet oder aber er das Mutex wieder freigibt.</p>
<p>Unterschiede gibt es auch beim Warten. Bei Events ist es so, daß der nächste zuteilungsfähige Thread drankommt (ich spreche von Auto-Reset-Events). Beim Mutex wird die Warteliste in einem FIFO organisiert. Der erste Thread, der auf das Mutex wartet, bekommt es dann auch zuerst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/95554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/95554</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Fri, 09 May 2003 08:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Mon, 14 Feb 2005 08:36:32 GMT]]></title><description><![CDATA[<p>-King- schrieb:</p>
<blockquote>
<p>Ein Event kann man nicht 'haben'. Da gibt es eben nur die zwei Zustände. Alle Threads können das Event fröhlich von dem einen in den anderen Zustand wechseln lassen.</p>
<p>Ein Mutex hingegen geht direkt in den Besitz eines Threads über. Und da bleibt es solange, bis entweder der Thread endet oder aber er das Mutex wieder freigibt.</p>
<p>Unterschiede gibt es auch beim Warten. Bei Events ist es so, daß der nächste zuteilungsfähige Thread drankommt (ich spreche von Auto-Reset-Events). Beim Mutex wird die Warteliste in einem FIFO organisiert. Der erste Thread, der auf das Mutex wartet, bekommt es dann auch zuerst.</p>
</blockquote>
<p>ich stimme dir jetzt mal prinzipiell zu. Allerdings können Mutexe auch prioritätsgesteuert sein. Also FIFO ja, solange alle Prozesse (für den Mutex) die gleiche Prio haben. Sonst wird die queue neu &quot;sortiert&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/722756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/722756</guid><dc:creator><![CDATA[el Clio]]></dc:creator><pubDate>Mon, 14 Feb 2005 08:36:32 GMT</pubDate></item><item><title><![CDATA[Reply to Mutex ??? on Mon, 14 Feb 2005 23:01:19 GMT]]></title><description><![CDATA[<p>Mutex = Mutual Exclusive Semaphore = Gegenseitig Ausschliessendes Wartesignal (der Begriff &quot;Semaphore&quot; stammt aus dem Eisenbahnbereich).</p>
<p>Genauso, wie ein Gleis immer nur von einem Zug passiert werden kann, sollten Daten immer nur von einem Thread gleichzeitig bearbeitet werden. Sonst kommt es zum Crash ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Ein Mutex verhindert also, dass zwei nebenlaeufige Programmteile (Threads) auf dieselben Daten zugreifen.</p>
<p>Hat ein Mutex einen Besitzer, und will ein anderer Nebenlauf des Programms das Mutex in Besitz nehmen, muss er warten. Dies erledigt das Betriebssystem automatisch, wenn man die Mutex-Funktionen richtig verwendet.</p>
<p>CreateMutex() zum Erstellen eines Mutex, WaitForSingleObject() zum Inbesitznehmen oder Pruefen eines Mutex, ReleaseMutex() zum Freigeben/Entsperren eines Mutex, sowie CloseHandle() zum Schliessen eines Mutex, wenn es nicht mehr gebraucht wird.</p>
<p>Mutexe sind das wichtigste Mittel zur Thread-Synchronisation.</p>
<p>Events (Ereignisse) dienen dazu, bestimmte Ereignisse zu signalisieren.</p>
<p>Windows kennt auch &quot;Semaphore&quot;, die allerdings als Zaehlvariable implementiert sind, was Programmierer mit anderem Background etwas verwirren duerfte.</p>
<p>Ein Blick ueber den Tellerrand:</p>
<p>- UNIX-aehnliche Systeme haben zwar Mutexe, aber keine Events. Diese muss man mittels sogenannter &quot;Bedingungs-Variable&quot; (condition variables) nachbilden.<br />
- AmigaOS nennt Events Signale, und Mutexe Signal-Semaphoren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/723531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/723531</guid><dc:creator><![CDATA[Power Off]]></dc:creator><pubDate>Mon, 14 Feb 2005 23:01:19 GMT</pubDate></item></channel></rss>