<?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[Wechselseitiger Ausschluß]]></title><description><![CDATA[<p>Moin.</p>
<p>Wenn ich die Synchronisationsmechanismen von Windows benutze, schützen diese IMHO nur vor dem gleichzeitigen Zugriff mehrerer Threads oder Prozesse.</p>
<p>Ich habe aber nur einen Thread, der eine Funktion eines Objekts aufruft. Wenn dies geschieht, soll das Objekt vor einem nächsten Aufruf geschützt werden. Es wird von einer anderen Stelle wieder freigegeben.<br />
Dann erst darf mein Thread wieder eine Funktion des Objekts aufrufen.</p>
<p>Gibts da unter Windows ne elegantere Möglichkeit, als das Objekt mit ner Boolschen Variable zu schützen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/155199/wechselseitiger-ausschluß</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Jul 2026 18:38:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155199.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Aug 2006 13:33:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wechselseitiger Ausschluß on Thu, 03 Aug 2006 13:33:16 GMT]]></title><description><![CDATA[<p>Moin.</p>
<p>Wenn ich die Synchronisationsmechanismen von Windows benutze, schützen diese IMHO nur vor dem gleichzeitigen Zugriff mehrerer Threads oder Prozesse.</p>
<p>Ich habe aber nur einen Thread, der eine Funktion eines Objekts aufruft. Wenn dies geschieht, soll das Objekt vor einem nächsten Aufruf geschützt werden. Es wird von einer anderen Stelle wieder freigegeben.<br />
Dann erst darf mein Thread wieder eine Funktion des Objekts aufrufen.</p>
<p>Gibts da unter Windows ne elegantere Möglichkeit, als das Objekt mit ner Boolschen Variable zu schützen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109936</guid><dc:creator><![CDATA[DarthZiu]]></dc:creator><pubDate>Thu, 03 Aug 2006 13:33:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wechselseitiger Ausschluß on Thu, 03 Aug 2006 13:54:59 GMT]]></title><description><![CDATA[<p>ich glaub nicht. die windoofs-synchs sind nur bei mutithreading hifreich. aber vielleicht hilft dir diese seite: <a href="http://www.castle-cadenza.demon.co.uk/lock.htm" rel="nofollow">http://www.castle-cadenza.demon.co.uk/lock.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109964</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Thu, 03 Aug 2006 13:54:59 GMT</pubDate></item><item><title><![CDATA[Reply to Wechselseitiger Ausschluß on Thu, 03 Aug 2006 14:25:27 GMT]]></title><description><![CDATA[<p>DarthZiu schrieb:</p>
<blockquote>
<p>Wenn dies geschieht, soll das Objekt vor einem nächsten Aufruf geschützt werden. Es wird von einer anderen Stelle wieder freigegeben.<br />
Dann erst darf mein Thread wieder eine Funktion des Objekts aufrufen.</p>
</blockquote>
<p>Und was ist das für eine &quot;andere Stelle&quot;? Liegt die auch in deinem Programm? Falls ja, wie soll der Schutz dann aussehen? Warten geht ja schlecht. Wenn dein einziger Thread wartet, wird diese &quot;andere Stelle&quot; ja nie erreicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1109984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1109984</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 03 Aug 2006 14:25:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wechselseitiger Ausschluß on Thu, 03 Aug 2006 15:03:11 GMT]]></title><description><![CDATA[<p>Eine Lösung wäre &quot;Single-Threaded-COM-Objekt&quot;...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110015</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 03 Aug 2006 15:03:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wechselseitiger Ausschluß on Thu, 03 Aug 2006 15:33:10 GMT]]></title><description><![CDATA[<p>Mmh, schwierig zu erklären, das System ist schon ziemlich komplex.</p>
<p>Abstrakt gesehen kann man es so erklären:</p>
<pre><code class="language-cpp">CallbackFunktion(HardwareZugriff* hwz);

class HardwareZugriff
{
    Start();
    Stop();

    IrgendeinDatentyp Ergebnis;
}
</code></pre>
<p>Die Klasse HardwareZugriff kapselt eine Hardwarekomponente, die ich über einen Treiber anspreche. Davon hab ich mehrere Objekte im System. Wenn ich ein <em>Ergebnis</em> von der Hardware haben will kommt ein Thread, ruft die Start() auf - alle wichtigen Sachen werden initialisiert und der Treiber angeworfen.<br />
Die Methode kehrt dann zurück und der Thread versucht den nächsten Zyklus.<br />
Wenn ich ein Ergebnis der Hardware bekomme, benachrichtigt meine Treiber mich über die Callbackfunktion - diese ruft dann Stop() auf um aufzuräumen.<br />
Nun muss ich sicherstellen, dass mein AufruferThread erst wieder Start() aufrufen kann, wenn meine CallbackFunktion Stop() für das Objekt aufgerufen hat.</p>
<p>Das könnte man halt über ne Boolsche Variable machen, aber ich finde es erstens unschön und außerdem muss man dann pollen.</p>
<p>Hoffe, man kann die Erklärung verstehen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110034</guid><dc:creator><![CDATA[DarthZiu]]></dc:creator><pubDate>Thu, 03 Aug 2006 15:33:10 GMT</pubDate></item><item><title><![CDATA[Reply to Wechselseitiger Ausschluß on Fri, 04 Aug 2006 09:21:16 GMT]]></title><description><![CDATA[<p>Du könntest alternativ auch mit Events arbeiten (stop() aktiviert den Event und start() (oder dein Hauptprogramm) wartet mit WaitForSingleObject() darauf, daß er gesetzt wird). Aber das klappt afaik nur, wenn die Callback-Funktion von einem anderen Thread aus aufgerufen wird (s.o.).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110419</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 04 Aug 2006 09:21:16 GMT</pubDate></item><item><title><![CDATA[Reply to Wechselseitiger Ausschluß on Fri, 04 Aug 2006 09:29:04 GMT]]></title><description><![CDATA[<p>Stell doch Deine Anfragen in eine &quot;Queue&quot;... aber mir scheint, dass irgendwas am ganzen Konzept nicht ganz stimmt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110426</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Fri, 04 Aug 2006 09:29:04 GMT</pubDate></item></channel></rss>