AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Unterschied Monitor/Critical section/Mutex
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschied Monitor/Critical section/Mutex

Ein Thema von Neutral General · begonnen am 4. Mär 2015 · letzter Beitrag vom 4. Mär 2015
Antwort Antwort
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#1

AW: Unterschied Monitor/Critical section/Mutex

  Alt 4. Mär 2015, 12:39
Für Windows gilt: Critical Sections sind schneller als ein Mutex, aber dafür nicht global. Eine CS ist kein Kernelobjekt (hat ja auch kein Handle), erfordert deswegen keinen langsamen Kontextwechsel vom User Mode in den Kernel Mode. Jedenfalls wenn die CS nicht gesperrt ist. Eine CS kann nur für Threads innerhalb ein und desselben Prozesses benutzt werden. Ein Mutex dagegen ist ein Kernelobjekt, erfordert deshalb immer einen Kontextwechsel, kann dafür aber auch global über mehrere Prozesse hinweg benutzt werden.

Zu TMonitor kann ich nichts sagen.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.047 Beiträge
 
Delphi 12 Athens
 
#2

AW: Unterschied Monitor/Critical section/Mutex

  Alt 4. Mär 2015, 13:05
TMonitor ist oft die schnellste Variante, da zuerst ein paar Spins versucht werden, ob es nicht vielleicht schon gleich funktioniert bevor die teure Variante (gemessen an Rechenzeit) mit WaitFor... Funktionen der API (WaitForSingleObject z.B., hab nicht geschaut was verwendet wird) benutzt wird.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.209 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Unterschied Monitor/Critical section/Mutex

  Alt 4. Mär 2015, 13:21
Hat man TMonitor nicht eine katastrophale Performance nachgesagt bis sich dessen in XE5 angenommen wurde?

Auf jeden Fall hier ein bisschen Stoff: http://www.delphitools.info/2013/06/...iticalsection/
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.047 Beiträge
 
Delphi 12 Athens
 
#4

AW: Unterschied Monitor/Critical section/Mutex

  Alt 4. Mär 2015, 14:34
Das stimmt, das bezog sich auf die aktuellen Versionen. Aber man kann ja den SpinCount auch manuell jeweils setzen. Das ist eine der Änderungen, die das ganze schneller gemacht hat.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

AW: Unterschied Monitor/Critical section/Mutex

  Alt 4. Mär 2015, 17:18
Den Spincount kann man übrigens auch bei Critical Sections einstellen / ändern.

"InitializeCriticalSectionAndSpinCount"

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Mmt TMonitor war es die einzige Möglichkeit unter Android / Firemonkey, die ich gefunden habe, einen Thread äquivalent zu Windows mit Event + WaitforSingleObject aus dem Schlafmodus sofort aufzurufen.

.
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.

Geändert von stoxx ( 4. Mär 2015 um 17:21 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz