AGB  ·  Datenschutz  ·  Impressum  







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

Event/Mutex Status

Ein Thema von Mavarik · begonnen am 1. Dez 2009 · letzter Beitrag vom 1. Dez 2009
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#1

Event/Mutex Status

  Alt 1. Dez 2009, 08:33
Hallo Zusammen...

Ich hänge gerade mal wieder...

SetEvent(Handle) - Klar
ResetEvent(Handle) - Klar
WaitForSingleObject(Handle,1000) - Klar...

Aber wie kann ich den Zustand abfragen?

repeat
xyz
Until Not(???(Handle));

Grüsse Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Event/Mutex Status

  Alt 1. Dez 2009, 08:41
Sollte bei Signaled-State die Schleife verlassen.
Delphi-Quellcode:
repeat
  ..
until WaitForSingleObject(Handle, 1) = WAIT_OBJECT_0;
Gut, bei NonSignaled macht es 'ne Millisekunde lang Pause und führt dann die Schleife fort.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Event/Mutex Status

  Alt 1. Dez 2009, 08:43
OK
Danke...

Hätte vielleicht doch erst einen Kaffee trinken sollen...


Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Event/Mutex Status

  Alt 1. Dez 2009, 08:46
'ne Funktion ohne Wartezeit ist mir auch noch nicht eingefallen
und die Idee hier eine 0 statt der 1 zu Verwenden sollte man gleich wieder ignorieren
(0 = unendlich und nicht 0 = nichts )


[add]
Es kommt auch drauf an, was du erreichen willst ... man glaubt garnicht, was man alles mit einem Byte anstellen kann

Delphi-Quellcode:
Var Status: ByteBool;

repeat

until Status;

und dann
Delphi-Quellcode:
Procedure SetEvent(Var B: ByteBool);
  ASM
    //LOCK MOV BYTE PTR [EAX], 1
    LOCK OR BYTE PTR [EAX], 1
  End;

Procedure ResetEvent(Var B: ByteBool);
  ASM
    //LOCK MOV BYTE PTR [EAX], 0
    LOCK AND BYTE PTR [EAX], 0
  End;
theoretisch sollte das Auskommentierte funktionieren, aber einige Compiler mögen es nicht
> External Exception C000001E

Bezüglich der Diskussionen über optimale Speichergrößen und Dergleichen, kann man auch gerne LongBool verwenden.
$2B or not $2B
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#5

Re: Event/Mutex Status

  Alt 1. Dez 2009, 10:51
Hallo zusammen,
seit wann bedeutet 0 = unendlich und nicht nichts?
Dafür gibts doch extra INFINITE, welches für unendlich steht.

Viele Grüße
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: Event/Mutex Status

  Alt 1. Dez 2009, 10:54
Zitat von Alex_ITA01:
Hallo zusammen,
seit wann bedeutet 0 = unendlich und nicht nichts?
Dafür gibts doch extra INFINITE, welches für unendlich steht.
Und genau deswegen ist 0 hier goldrichtig, sagt ja auch MS:
Zitat:
If dwMilliseconds is zero, the function does not enter a wait state if the object is not signaled; it always returns immediately.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Event/Mutex Status

  Alt 1. Dez 2009, 10:58
Komisch, mir wasr so, als hätte ich vorhin im MSDN quasi sowas gelesen, wie
wenn 0 dann gibt es kein Timeout
gelesen hätte ... beim nochmaligen Lesen kann ich nur sagen ... erst fertiglesen das INFINITE wird dann auch noch erwähnt

OK, dann ist die 0 natürlich doch gut
$2B or not $2B
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#8

Re: Event/Mutex Status

  Alt 1. Dez 2009, 11:05
Gut wenn man mal drüber gesprochen hat

Let's fetz sprach der Frosch und sprang in den Mixer
  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 07:27 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