<?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[Threads, CSemaphor, CSinglelock und Assertion in mtex.cpp]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe ein ärgerliches Problem. Jedes mal, wenn ich mein Programm ausführe erhalte ich einen Assertion Alert in mtex.cpp in Zeile 106:</p>
<pre><code class="language-cpp">BOOL CSingleLock::Lock(DWORD dwTimeOut /* = INFINITE */)
{
	ASSERT(m_pObject != NULL || m_hObject != NULL);
	ASSERT(!m_bAcquired); //&lt;&lt;&lt;&lt;&lt; Zeile 106

	m_bAcquired = m_pObject-&gt;Lock(dwTimeOut);
	return m_bAcquired;
}
</code></pre>
<p>Hier mein Weg um die Threads zu erzeugen:</p>
<pre><code class="language-cpp">CSemaphore *mySemaphore;
mySemaphore = new CSemaphore(nThreads,nThreads);
CSingleLock mySingleLock(mySemaphore, true);

mySingleLock.Lock(); //&lt;&lt;&lt;&lt; Hier tritt der Fehler auf
AfxBeginThread(MyControllingFunction, threadHQ[threadCount]);
</code></pre>
<p>Wenn ich oft genug auf ignorieren oder wiederholen klicke, wird die Aufgabe im Thread jedoch meistens erfüllt, auch wenn das Programm letztendlich abstürzt.</p>
<p>Ich hoffe jetzt eigentlich nur, dass jemandem hier dieser Fehler eventuell bekannt vorkommt da ich nicht sehr viel weiteren Code posten kann. Im Thread greife ich Inhalte von Websites ab, aber ich denke nicht, dass es damit etwas zutun hat. Irgendwas im CSingeleLock ist kaputt.</p>
<p>Kennt also evtl jemand von euch diesen Fehler oder kann mich ein wenig auf den richtigen Weg schubsen? Welche einfache Alternative gäbs noch zu CSingleLock ?</p>
<p>Vielen Dank im Vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/144035/threads-csemaphor-csinglelock-und-assertion-in-mtex-cpp</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 03:51:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/144035.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 Apr 2006 20:59:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threads, CSemaphor, CSinglelock und Assertion in mtex.cpp on Thu, 13 Apr 2006 20:59:37 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe ein ärgerliches Problem. Jedes mal, wenn ich mein Programm ausführe erhalte ich einen Assertion Alert in mtex.cpp in Zeile 106:</p>
<pre><code class="language-cpp">BOOL CSingleLock::Lock(DWORD dwTimeOut /* = INFINITE */)
{
	ASSERT(m_pObject != NULL || m_hObject != NULL);
	ASSERT(!m_bAcquired); //&lt;&lt;&lt;&lt;&lt; Zeile 106

	m_bAcquired = m_pObject-&gt;Lock(dwTimeOut);
	return m_bAcquired;
}
</code></pre>
<p>Hier mein Weg um die Threads zu erzeugen:</p>
<pre><code class="language-cpp">CSemaphore *mySemaphore;
mySemaphore = new CSemaphore(nThreads,nThreads);
CSingleLock mySingleLock(mySemaphore, true);

mySingleLock.Lock(); //&lt;&lt;&lt;&lt; Hier tritt der Fehler auf
AfxBeginThread(MyControllingFunction, threadHQ[threadCount]);
</code></pre>
<p>Wenn ich oft genug auf ignorieren oder wiederholen klicke, wird die Aufgabe im Thread jedoch meistens erfüllt, auch wenn das Programm letztendlich abstürzt.</p>
<p>Ich hoffe jetzt eigentlich nur, dass jemandem hier dieser Fehler eventuell bekannt vorkommt da ich nicht sehr viel weiteren Code posten kann. Im Thread greife ich Inhalte von Websites ab, aber ich denke nicht, dass es damit etwas zutun hat. Irgendwas im CSingeleLock ist kaputt.</p>
<p>Kennt also evtl jemand von euch diesen Fehler oder kann mich ein wenig auf den richtigen Weg schubsen? Welche einfache Alternative gäbs noch zu CSingleLock ?</p>
<p>Vielen Dank im Vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1037170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1037170</guid><dc:creator><![CDATA[Hever]]></dc:creator><pubDate>Thu, 13 Apr 2006 20:59:37 GMT</pubDate></item><item><title><![CDATA[Reply to Threads, CSemaphor, CSinglelock und Assertion in mtex.cpp on Fri, 28 Apr 2006 20:34:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">CSemaphore *mySemaphore;
mySemaphore = new CSemaphore(nThreads,nThreads);
CSingleLock mySingleLock(mySemaphore, true);

mySingleLock.Lock();
mySingleLock.Lock(); //&lt;&lt;&lt;&lt; Hier tritt der Fehler auf
</code></pre>
<p>Ich habe zu wenig Infos geliefert und konnte den Fehler jetzt etwas eingrenzen.<br />
Das Problem tritt bei mir immer dann auf, wen ich mySingleLock.Lock(); ein zweites mal ausführe, wie im obigen Beispiel gezeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1047376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1047376</guid><dc:creator><![CDATA[Hever]]></dc:creator><pubDate>Fri, 28 Apr 2006 20:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to Threads, CSemaphor, CSinglelock und Assertion in mtex.cpp on Fri, 28 Apr 2006 21:58:10 GMT]]></title><description><![CDATA[<p>So jetzt konnte ich den Fehler beheben und kann damit das Selbstgespräch beenden <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>Ich möchte noch eben die Lösung anbieten, falls sonst noch jemand auf dieses Problem stöst. Der Fehler war, das ich die implementation von Semaphoren bzw. threadsicheren Klassen noch nicht richtig verstanden hatte.</p>
<p>Die beiden genannten Beispiele habe ich in einer einfachen Methode ausgeführt.</p>
<p>Ich dachte mir &quot;Resource sperren und dann Thread starten&quot;. So funktioniert dass aber nicht. In der MyControllingFunction greife ich auf eine Klasse zurück. Die ganzen CSemaphor Sachen gehören in diese Klasse auf die ich aus dem Thread heraus zugreife.</p>
<p>Ich habe den Semaphor und den SingleLock also in diese Klasse eingebunden und nun gilt sie als threadsicher und es funktioniert alles ganz Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1047421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1047421</guid><dc:creator><![CDATA[Hever]]></dc:creator><pubDate>Fri, 28 Apr 2006 21:58:10 GMT</pubDate></item></channel></rss>