Forum: Win32/Win64 API (native code)
Delphi
by jaenicke,
28. Nov 2010
Dort hast du eine Resource und zwei kritische Sektionen, die du für den Zugriff benutzt.
In Sir Rufos Code hast du genau eine kritische Sektion für genau eine Resource.
Forum: Win32/Win64 API (native code)
Delphi
by jaenicke,
28. Nov 2010
Tut es ja nicht. Ein anderer Thread (z.B. der Hauptthread) greift über die Eigenschaften des Zielthreads aus seinem Kontext zu. Innerhalb des Getters bzw. Setters wird dann über die kritische Sektion des Zielthreads, zu dem die Eigenschaft gehört, verhindert, dass gleichzeitig von innerhalb des Zielthreads darauf zugegriffen wird.
Forum: Win32/Win64 API (native code)
Delphi
by jaenicke,
28. Nov 2010
Das ist aber ein vollkommen anderer Fall als der aus seinem Beispiel. Hier hast du eine globale Variable, auf die eben von verschiedenen Stellen aus zugegriffen wird. Das ist ja etwas anderes.
In seinem Beispiel befindet sich das Feld, auf das zugegriffen wird, innerhalb des Threads. Und es wird ausschließlich über die kritische Sektion genau dieses Threads zugegriffen. Und eben nicht durch...
Forum: Win32/Win64 API (native code)
Delphi
by jaenicke,
28. Nov 2010
Der übergreifende Zugriff auf die Resource des Threadobjektes passiert ja über die dazu gehörende kritische Sektion.
Das heißt es geht nicht darum, auf die selbe Resource mit verschiedenen kritischen Sektionen zuzugreifen, wie du offenbar vermutest.
Forum: Win32/Win64 API (native code)
Delphi
by jaenicke,
28. Nov 2010
Wenn es um den Zugriff auf Resourcen des Threads geht (wie in dem Beispiel, um das es geht), dann reicht auch eine threadlokale kritische Sektion. Denn da im Getter und Setter diese genauso benutzt wird wie innerhalb des Threads, ist kein paralleler Zugriff auf das private Feld hinter Getter bzw. Setter möglich.
Der Zugriff aus einem anderen Thread passiert ja über die Getter und Setter bzw....