AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

W1000 Symbol 'Resume' ist veraltet ????

Ein Thema von RaSoWa1 · begonnen am 28. Mär 2010 · letzter Beitrag vom 24. Aug 2011
Antwort Antwort
Seite 3 von 4     123 4      
EWeiss
(Gast)

n/a Beiträge
 
#21

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 23. Aug 2011, 15:03
Danke sirius hab meinen Beitrag nochmal editiert.
Komme mit einigen sachen noch nicht ganz klar

gruss
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#22

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 23. Aug 2011, 15:30
Wie auch in der Delphi-Hilfe werden in jedem MSDN-Artikel leider nur Teilaspekte angesprochen.
Und so ein Teilaspekt ist halt auch folgender:
(Suche nach "SuspendThread race condition")
Zitat:
The reason is related to a possible race condition with the suspend count.
The suspend count is incremented by a call to SuspendThread(), and is
decremented by a call to ResumeThread(). If the suspend count is non-zero,
then the scheduler will mark the thread as "waiting" (or not ready), and
will not schedule the thread for processing; conversely, when the suspend
count is exactly zero, the thread is marked as "ready" and is given
processing time. The race condition occurs because access to the suspend
count is not synchronized between threads, such that it is possible for one
thread to decrement the suspend count beyond zero to a value of -1. At that
value, the thread will never be scheduled for processing.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#23

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 23. Aug 2011, 15:34
Kann sich nochmal bitte jemand dieser Frage annehmen?
http://www.delphipraxis.net/1118970-post19.html

gruss
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#24

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 23. Aug 2011, 15:44
Kann sich nochmal bitte jemand dieser Frage annehmen?
http://www.delphipraxis.net/1118970-post19.html

gruss
1. Such dir halt einen Namen aus (suspend ist ja leider schon vergeben; genauso: break und interrupt) Stop wäre noch übrig. Aber dann neigt man beim weitermachen dazu start zu verwenden, was ja schon vergeben ist. Das Antonym für continue ist ja discontinue. Gibts aber zumindest in meinem aktiven Wortschatz bisher nicht. Naja, lass dir was einfallen....

2. CriticalSection ist ein Handle-Objekt. EnterCriticalSection ist eine Funktion auf dieses Handle-Objekt.
TCriticalSection ist eine Klasse, welches das Handle-Objekt CriticalSection kapselt. TCriticalsection.EnterCriticalSection ist eine Methode vorheriger Klasse.
Was war eigentlich genau deine Frage?

Deine 3. Frage verstehe ich nicht.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#25

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 23. Aug 2011, 15:49
Zitat:
2. CriticalSection ist ein Handle-Objekt. EnterCriticalSection ist eine Funktion auf dieses Handle-Objekt.
TCriticalSection ist eine Klasse, welches das Handle-Objekt CriticalSection kapselt. TCriticalsection.EnterCriticalSection ist eine Methode vorheriger Klasse.
Habe dann wohl was falsch gemacht.
Dann habe ich zwar das Handle object erstellt aber keine Function welche das handle verwaltet (bzw. damit arbeitet)

Die Frage war ..
An welcher stelle ist es sinnvoll EntercriticalSection und LeaveCriticalSection in TVisDataThread.Execute unterzubringen?

wo könnte hier etwas Kritisch sein das ich EntercriticalSection verwenden muss, sollte?
Muss mal bei MS lesen wofür EntercriticalSection genau steht
Verstehe die Anwendung der Function wohl noch nicht!

gruss

Geändert von EWeiss (23. Aug 2011 um 15:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#26

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 23. Aug 2011, 15:54
Die Frage war ..
An welcher stelle ist es sinnvoll EntercriticalSection und LeaveCriticalSection in TVisDataThread.Execute unterzubringen?

wo könnte hier etwas Kritisch sein das ich EntercriticalSection verwenden muss, sollte?
Dazu eine Frage:
Welche Variablen in Execute verwendest du auch außerhalb des Threads (und zwar in dem Moment, wo der Thread läuft)?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#27

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 23. Aug 2011, 16:03
Zitat:
The race condition occurs because access to the suspend
count is not synchronized between threads, such that it is possible for one
thread to decrement the suspend count beyond zero to a value of -1.
Da ausschliessliuch der Thread selber SuspendCount verringert seh ich darin kein Problem - auch wieder ein Fall wo nur das Suspend aus einem anderen Thread zum Fehler führt.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#28

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 23. Aug 2011, 16:06
Die Frage war ..
An welcher stelle ist es sinnvoll EntercriticalSection und LeaveCriticalSection in TVisDataThread.Execute unterzubringen?

wo könnte hier etwas Kritisch sein das ich EntercriticalSection verwenden muss, sollte?
Dazu eine Frage:
Welche Variablen in Execute verwendest du auch außerhalb des Threads (und zwar in dem Moment, wo der Thread läuft)?
FDelayMSChanged
FDelayMSChanged wird aufgerufen wenn ein neues Plugin gestartet wird und die ms sich geändert haben.

ps..
ist aber vom gleichen Thread

Delphi-Quellcode:
procedure TVisDataThread.SetDelayMS(delayMs: DWORD);
var
  tmpDelayMS: DWORD;
begin

  tmpDelayMS := delayMs;
  if tmpDelayMS < 10 then
    tmpDelayMS := 10;
  if tmpDelayMS <> FDelayMS then
  begin
    if FDelayMS <> 0 then
      FDelayMSChanged := True;
    FDelayMS := tmpDelayMS;
  end;
end;
gruss

Geändert von EWeiss (23. Aug 2011 um 16:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#29

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 23. Aug 2011, 16:11
Zitat:
The race condition occurs because access to the suspend
count is not synchronized between threads, such that it is possible for one
thread to decrement the suspend count beyond zero to a value of -1.
Da ausschliessliuch der Thread selber SuspendCount verringert seh ich darin kein Problem - auch wieder ein Fall wo nur das Suspend aus einem anderen Thread zum Fehler führt.
Eben nicht.
Dieses Problem tritt auf, wenn TmyThread Suspend aufruft und der MainThread gleichzeitig Resume aufruft, was bei deinem Code durchaus passieren kann.


Zitat von Emil:
FDelayMSChanged
FDelayMSChanged wird aufgerufen wenn ein neues Plugin gestartet wird und die ms sich geändert haben.
Dann must du um jeden Zugriff (eigentlich nur, wenn mindestens ein Thread auch schreibend darauf zugreift) EnterCriticalSection und LeaveCriticalSection basteln (und zwar von der exakt gleichen Objektinstanz)
Allerdings hast du hier eine Variable allersimplesten Datentypes. Da reichen die interlocked-Funktionen aus und die synchronisation kann entfallen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#30

AW: W1000 Symbol 'Resume' ist veraltet ????

  Alt 23. Aug 2011, 16:15
Zitat:
Allerdings hast du hier eine Variable allersimplesten Datentypes. Da reichen die interlocked-Funktionen aus und die synchronisation kann entfallen.
Was bedeutet das ich LockFlag sowie EnterCriticalSection gar nicht verwenden muss?

Mir ging es eigentlich darum eventuelle hänger beim umschalten auf andere Plugins zu vermeiden.
Dafür scheint dann wohl EnterCriticalSection nicht das richtige zu sein.

Hab dann wohl was falsch verstanden..

Danke für deine Hilfe

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 20:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz