<?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[Enter&#x2F;Leave Critical SEction]]></title><description><![CDATA[<p>Bin grad bischen am &quot;Mutlirthreaden&quot; und Syncronisieren! und es Funktionier bisher wundderbar:) Nun eine Frage, was passiert wenn zwei Thread auf die gleiche Ressoruce zugreifen wollen, udn beide exakt zur gleichen zeit<br />
EnterCriticalSection aurufen? Gibts dann nen Deadlock, oder its sowas nicht möglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192728/enter-leave-critical-section</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 18:46:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192728.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Sep 2007 05:19:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 05:19:40 GMT]]></title><description><![CDATA[<p>Bin grad bischen am &quot;Mutlirthreaden&quot; und Syncronisieren! und es Funktionier bisher wundderbar:) Nun eine Frage, was passiert wenn zwei Thread auf die gleiche Ressoruce zugreifen wollen, udn beide exakt zur gleichen zeit<br />
EnterCriticalSection aurufen? Gibts dann nen Deadlock, oder its sowas nicht möglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367385</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 18 Sep 2007 05:19:40 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 05:46:27 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Bin grad bischen am &quot;Mutlirthreaden&quot; und Syncronisieren! und es Funktionier bisher wundderbar:) Nun eine Frage, was passiert wenn zwei Thread auf die gleiche Ressoruce zugreifen wollen, udn beide exakt zur gleichen zeit<br />
EnterCriticalSection aurufen? Gibts dann nen Deadlock, oder its sowas nicht möglich?</p>
</blockquote>
<p>Du schreibst eigentlich schon lange genug in dem Forum um zu wissen, das Threads nicht Ansi C++ sind und du je nach Bibliothek ggf. in einen anderen Unterforum zu posten hast. Zudem wäre es auch mal gut zu erfahren welche Threading-Bibliothek du einsetzt.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367393</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 18 Sep 2007 05:46:27 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 06:05:02 GMT]]></title><description><![CDATA[<p>beim multithreading warten bei simultanen zugriff auf resourcen deadlocks an jeder ecke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> und genau deshalb gibs in jeder lib entsprechende mechanismen, um solche zugriffe zu koordinieren.</p>
<p>grundsätzlich kann man dabei wohl sagen, dass aktives warten (polling) weniger anfällig gegen deadlocks ist, als passives warten. beim aktiven warten kann jeder thread selbst entscheiden, ob eine resource vielleicht doch nicht verfügbar ist (timeout), beim passiven warten kann die ganze app zum stehen kommen, wenn der supervisor sich verabschiedet.</p>
<p>musst einfach mal in die doku deiner lib gucken, was die dafür anbietet.</p>
<p>und noch ne anmerkung: auch bei multithreading gibt es kein &quot;gleichzeitig&quot;. selbst die tollste nebenläufige anwendung muss irgendwann mal sequentiell verarbeitet werden. deshalb trifft die grundannahme, &quot;irgendwer kommt zuerst&quot; immer zu und erlaubt anständige koordination von kritischen zugriffen.</p>
<p>worauf allerdings penibel geachtet werden muss ist, dass die sperrung des zugriffes auf eine resource, eine atomare operation ist. d.h. sie darf nicht unterbrochen werden. wenn das nämlich passiert, dann ist nen deadlock schon vorprogrammiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367400</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Tue, 18 Sep 2007 06:05:02 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 06:10:48 GMT]]></title><description><![CDATA[<p>thordk schrieb:</p>
<blockquote>
<p>und noch ne anmerkung: auch bei multithreading gibt es kein &quot;gleichzeitig&quot;. selbst die tollste nebenläufige anwendung muss irgendwann mal sequentiell verarbeitet werden. deshalb trifft die grundannahme, &quot;irgendwer kommt zuerst&quot; immer zu und erlaubt anständige koordination von kritischen zugriffen.</p>
</blockquote>
<p>Mit Dual Core Prozessoren immer noch??</p>
<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>Nun eine Frage, was passiert wenn zwei Thread auf die gleiche Ressoruce zugreifen wollen, udn beide exakt zur gleichen zeit<br />
EnterCriticalSection aurufen? Gibts dann nen Deadlock, oder its sowas nicht möglich?</p>
</blockquote>
<p>Dann wäre multithreading ja nur noch Glücksspiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367406</guid><dc:creator><![CDATA[ehrlich]]></dc:creator><pubDate>Tue, 18 Sep 2007 06:10:48 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 08:31:10 GMT]]></title><description><![CDATA[<p>neee, die hohe kunst des multithreading programmierens ist ja, die Locks so minimal zu halten.<br />
Also entscheiden, ob gemeinsammer zugriff auf eine ressource, oder einmaliges kopieren der ressource und dann die threads auf den kopien arbeiten lassen, besser ist ....</p>
<p>Gemeinsam genutzte ressourcen muss man locken, die frage ist eigentlich, sind gemeinsam genutzte ressourcen immer notwendig ?</p>
<p>wobei rein lesende zugriffe schon parrallel gehen ...</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367481</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Tue, 18 Sep 2007 08:31:10 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 10:43:12 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Zudem wäre es auch mal gut zu erfahren welche Threading-Bibliothek du einsetzt.</p>
</blockquote>
<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>...EnterCriticalSection...</p>
</blockquote>
<p>ich tippe auf Win32 API <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>BorisDieKlinge schrieb:</p>
<blockquote>
<p>was passiert wenn zwei Thread auf die gleiche Ressoruce zugreifen wollen, udn beide exakt zur gleichen zeit<br />
EnterCriticalSection aurufen? Gibts dann nen Deadlock, oder its sowas nicht möglich?</p>
</blockquote>
<p>das hängt wohl von der ressource/der art des zugriffs ab...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367609</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Tue, 18 Sep 2007 10:43:12 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 10:51:06 GMT]]></title><description><![CDATA[<p>außerdem sind lesezugriffe imho unproblematisch<br />
und für gleichzeitige schreibzugriffe gibts ja dann<br />
den asm lock bzw. die api wrapper</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367617</guid><dc:creator><![CDATA[Sovok]]></dc:creator><pubDate>Tue, 18 Sep 2007 10:51:06 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 11:15:45 GMT]]></title><description><![CDATA[<p>also um mal auf das EnterCriticalSection() zu schliessen, nein selbst bei multicore kommt es mit dem momentanen c++ standard unmöglich zu einem absolut gleichzeitigen zugriff auf dieses critical section, da es noch keine echte multiprozessor arbeit für c++ gibt .... es kann sein das ich hier in der erfahrung hinter dem stand der dinge bin, ich bitte um dringliche korrektur falls dem so ist.</p>
<p>unter vista und windows 2003 server solltest du allerdings beachten das es nicht mehr sicher ist das der besitzer einer CS diese auch freigibt wenn er danach &quot;fast sofort&quot; wieder in sie eintritt, d.h. wenn 2 threads permanent über eine CS laufen, kann es passieren das 1 thread permanent drin rumrödelt, während der andere sich die beine in den bauch steht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367634</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Tue, 18 Sep 2007 11:15:45 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 11:33:13 GMT]]></title><description><![CDATA[<p>Ceos schrieb:</p>
<blockquote>
<p>selbst bei multicore kommt es mit dem momentanen c++ standard unmöglich zu einem absolut gleichzeitigen zugriff auf dieses critical section, da es noch keine echte multiprozessor arbeit für c++ gibt</p>
</blockquote>
<p>Was ist &quot;Multiprozessor Arbeit für C++&quot;?</p>
<p>Ich denke, wenn zwei ASM-Segmente zweier Threads zufällig auf unterschiedlichen Kernen landen, können sie sehr wohl parallel ausgeführt werden. Darauf hat der C++-Compiler an der Stelle auch garkeinen Einfluß mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367644</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 18 Sep 2007 11:33:13 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 11:37:01 GMT]]></title><description><![CDATA[<p>ich meine mal gelesen zu haben das trotz multithread und multicore 2 threads immernoch sequentiell (öhm wie wird das nochmal geschrieben cih steh grad aufm schlau) auf den speicher zugreifen im derzeitigen standard</p>
<p>hm kann auch sein das die meinten das die compilermäßige einflussnahme darauf noch nicht implemntiert ist, dann möcht ich mich für meine schlechte auslegung entschuldigen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367648</guid><dc:creator><![CDATA[Ceos]]></dc:creator><pubDate>Tue, 18 Sep 2007 11:37:01 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 12:16:06 GMT]]></title><description><![CDATA[<blockquote>
<p>ich meine mal gelesen zu haben das trotz multithread und multicore 2 threads immernoch sequentiell ...</p>
</blockquote>
<p>Das haengt von zu vielen faktoren ab um das so pauschal zu bejahen oder zu verneinen.<br />
Sogar die BS selber verhalten sich z.b. bisserl anders ...</p>
<p>wenn du unter windows XP mit normalen compilereinstellungen und keine weiteren API funktionen nutzt als die CreateThread / Resume ... etc, dann werden die threads auf ein und dem selben kern laufen.<br />
Mit compilerdirektiven und einigen extra api aufrufen kann man da auch bisserl nachhelfen.<br />
Ist aber auch logisch, threads untereinander sind eigentlich ziemlich eng verwand, sie teilen sich halt die kompletten ressourcen. Das sind nicht nur die ressourcen die du anlegst, sondern das ganze prozess enviroment. Bei normaler, naiver nutzung der ressourcen von 2 threads auf 2 kernen, wuerden die 2 kerne ihre register und ihre lokalen cashes umherkopieren muessen wie doof. Also performance ade .... Man muss also dazu auch noch andere vorbereitungen treffen das das performancetechnisch geht.</p>
<p>Laufen auf 2 kernen realisiert man besser mit multiprozessing als mit multihreading (wenn man nich so tief in die materie einsteigen will). Klar kontorlliertes MT auf 2 kernen kann schon performanter sein als pauschales multiprozessing.</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367678</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Tue, 18 Sep 2007 12:16:06 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 12:26:18 GMT]]></title><description><![CDATA[<p>Ceos schrieb:</p>
<blockquote>
<p>ich meine mal gelesen zu haben das trotz multithread und multicore 2 threads immernoch sequentiell (öhm wie wird das nochmal geschrieben cih steh grad aufm schlau) auf den speicher zugreifen im derzeitigen standard</p>
</blockquote>
<p>Das hängt doch nicht von der Programmiersprache sondern von de jeweiligen Rechnerarchitektur ab. Das mag zum Beispiel bei einem Intel Rechner noch so sein, weil diese noch immer einen FSB haben, aber so ziemlich alle anderen Multiprozessorsysteme machen dies anders. Da gibt es dann parallele Zugriffe auf unterschiedliche Speicherbereiche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1367692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367692</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Tue, 18 Sep 2007 12:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to Enter&#x2F;Leave Critical SEction on Tue, 18 Sep 2007 12:57:51 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-403.html" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" 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/1367727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1367727</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Tue, 18 Sep 2007 12:57:51 GMT</pubDate></item></channel></rss>