Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

21

12.09.2010, 08:54

Habe das gleiche CS wie oben verwendet nur das ich das INIT und DELETE in Const-/bzw. Destruktor hatte. Hat wieder den gleichen Fehler gegeben wie wenn ich das CS ganz weg lasse. Da er dann gelegentlich zweimal in dirketer Folge (von unterschiedlichen Threads) das INIT verwendet hat. Und dass, das vorherige LOCK platt gemacht hat.

Soll das heißen du hast in beiden Threads InitializeCriticalSection() aufgerufen? Warum?

Habe ich mir gedacht. Aber ich finde es genauso flasch den CS zu blockieren. Und das mit den unterschiedlichen SCOPES ist nunja ... Nicht jeder andere Programmierer bedenkt das.

"Das mit den Scopes" ist die bei weitem eleganteste mir bekannte Lösung. Es ist automatisch exception safe und es kann niemals passieren dass man ein LeaveCriticalSection() vergisst (z.B. wenn man schnell mal wo mittendrin ein return; einbaut). Mit diesem Prinzip (RAII) sollte jeder C++ Programmierer vertraut sein da es zum Handwerkszeug eines C++ Programmierers gehört.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (12.09.2010, 09:00)