<?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[Synchronisation mit Mutexe]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein kleines Programm, das einen Thread aufruft und wartet, bis sich Dieser beendet hat. Dazu warte ich mit WaitForSingleObject, bis der Mutex freigegeben wird. Allerdings wartet das main-Programm gar nicht, bis der Thread durchlaufen ist. Kann mir jemand sagen, warum das so ist und was man machen kann, damit der gewünschte Effekt erzielt wird?</p>
<pre><code class="language-cpp">DWORD __stdcall Thread1(void*) 
{ 

	HANDLE hMutex;
	DWORD dwRet;

	hMutex=OpenMutex( MUTEX_ALL_ACCESS, FALSE,  MYMUTEX);
	Sleep(5000);

	ReleaseMutex(hMutex);
    return TRUE; 
}

int main(int argc, char* argv[])
{
	// Create a mutex with no initial owner.
	DWORD tID;
	DWORD dwWaitResult; 

	hMutex = CreateMutex( NULL,FALSE,MYMUTEX);                  
	if (hMutex == NULL) 
	{
		printf(&quot;CreateMutex error: %d\n&quot;, GetLastError());
	}
	CreateThread(NULL,0,Thread1,NULL,0,&amp;tID);

	dwWaitResult = WaitForSingleObject(hMutex, INFINITE);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/95215/synchronisation-mit-mutexe</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 17:10:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/95215.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 17 Dec 2004 10:52:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Synchronisation mit Mutexe on Fri, 17 Dec 2004 10:52:56 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein kleines Programm, das einen Thread aufruft und wartet, bis sich Dieser beendet hat. Dazu warte ich mit WaitForSingleObject, bis der Mutex freigegeben wird. Allerdings wartet das main-Programm gar nicht, bis der Thread durchlaufen ist. Kann mir jemand sagen, warum das so ist und was man machen kann, damit der gewünschte Effekt erzielt wird?</p>
<pre><code class="language-cpp">DWORD __stdcall Thread1(void*) 
{ 

	HANDLE hMutex;
	DWORD dwRet;

	hMutex=OpenMutex( MUTEX_ALL_ACCESS, FALSE,  MYMUTEX);
	Sleep(5000);

	ReleaseMutex(hMutex);
    return TRUE; 
}

int main(int argc, char* argv[])
{
	// Create a mutex with no initial owner.
	DWORD tID;
	DWORD dwWaitResult; 

	hMutex = CreateMutex( NULL,FALSE,MYMUTEX);                  
	if (hMutex == NULL) 
	{
		printf(&quot;CreateMutex error: %d\n&quot;, GetLastError());
	}
	CreateThread(NULL,0,Thread1,NULL,0,&amp;tID);

	dwWaitResult = WaitForSingleObject(hMutex, INFINITE);

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/675141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/675141</guid><dc:creator><![CDATA[derBob]]></dc:creator><pubDate>Fri, 17 Dec 2004 10:52:56 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation mit Mutexe on Fri, 17 Dec 2004 10:55:24 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=403" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=4" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/675143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/675143</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Fri, 17 Dec 2004 10:55:24 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation mit Mutexe on Fri, 17 Dec 2004 12:27:32 GMT]]></title><description><![CDATA[<p>OpenMutex sperrt es noch nicht, das musst du noch mit einer wait function machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/675197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/675197</guid><dc:creator><![CDATA[Ringding]]></dc:creator><pubDate>Fri, 17 Dec 2004 12:27:32 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation mit Mutexe on Mon, 20 Dec 2004 06:57:11 GMT]]></title><description><![CDATA[<p>Ringding schrieb:</p>
<blockquote>
<p>OpenMutex sperrt es noch nicht, das musst du noch mit einer wait function machen.</p>
</blockquote>
<p>Ich will ja im main() mittels ders wait auf des release vom Thread warten. Warum geht das denn nicht so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/676951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/676951</guid><dc:creator><![CDATA[derBob]]></dc:creator><pubDate>Mon, 20 Dec 2004 06:57:11 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation mit Mutexe on Mon, 20 Dec 2004 09:28:00 GMT]]></title><description><![CDATA[<p>Weil du im Thread auch wait aufrufen musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/677008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/677008</guid><dc:creator><![CDATA[Ringding]]></dc:creator><pubDate>Mon, 20 Dec 2004 09:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation mit Mutexe on Mon, 20 Dec 2004 11:27:35 GMT]]></title><description><![CDATA[<p>Ringding schrieb:</p>
<blockquote>
<p>Weil du im Thread auch wait aufrufen musst.</p>
</blockquote>
<p>Und wie bitte soll ich das machen?<br />
Wenn ich das so schreibe</p>
<pre><code class="language-cpp">DWORD __stdcall Thread1(void*) 
{ 

	HANDLE hMutex;
	DWORD dwRet;

	hMutex=OpenMutex( MUTEX_ALL_ACCESS, FALSE,  MYMUTEX);

	dwRet = WaitForSingleObject(hMutex, 5000L);
	Sleep(5000);
	ReleaseMutex(hMutex);
    return TRUE; 
}

int main(int argc, char* argv[])
{
	// Create a mutex with no initial owner.
	DWORD tID;
	DWORD dwWaitResult; 

	hMutex = CreateMutex( NULL,FALSE,MYMUTEX);                  
	if (hMutex == NULL) 
	{
		printf(&quot;CreateMutex error: %d\n&quot;, GetLastError());
	}
	CreateThread(NULL,0,Thread1,NULL,0,&amp;tID);

	dwWaitResult = WaitForSingleObject(hMutex, INFINITE);

	return 0;
}
</code></pre>
<p>lauft die main trotzdem durch, ohne auf das Release im Thread zu warten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/677078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/677078</guid><dc:creator><![CDATA[derBob]]></dc:creator><pubDate>Mon, 20 Dec 2004 11:27:35 GMT</pubDate></item><item><title><![CDATA[Reply to Synchronisation mit Mutexe on Mon, 20 Dec 2004 14:06:53 GMT]]></title><description><![CDATA[<p>Wundert mich nicht <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="🙂"
    /></p>
<p>Vermutlich kriegt der Main Thread das Mutex zuerst und terminiert. Du könntest es im Main Thread locken, dann den Thread erzeugen, dann freigeben und nochmal locken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/677224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/677224</guid><dc:creator><![CDATA[Ringding]]></dc:creator><pubDate>Mon, 20 Dec 2004 14:06:53 GMT</pubDate></item></channel></rss>