INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Wait im UI Thread (?)



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

26.01.2012, 17:48
Beitrag #1

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
Wait im UI Thread (?)
Hallo,

ich habe vom LabVIEW Support von peak-system.com die Aussage bekommen:

"Wenn ich richtig informiert bin, dann verursachen sowohl Wait, Metronom als auch Tick Count einen Taskwechsel in den GUI thread. Das kann unter umständen sehr negativ sein."

Jetzt bin ich verwirrt. Der UI Thread ist doch der böse mit der geringen Prio, der einem die Programmperformance torpediert. Deswegen auch die Misere mit property nodes. Das passt nicht in meine Weltansicht wo die Waits die Guten sind und ungebremste Schleifen die Bösen.

   

Soll die jetzt ohne wait laufen? Nää...



Gruß Dimitri

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.02.2012, 20:50
Beitrag #2

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
RE: Wait im UI Thread (?)
Hallo Jungs,

was meint ihr?

"... verursachen sowohl Wait, Metronom als auch Tick Count einen Taskwechsel in den GUI thread" ?


Gruß
dimitri

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.02.2012, 22:30
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Wait im UI Thread (?)
Kein Ahnung, aber man könnte die Aufzählung der Verdächtigen noch erweitern:
Kann man den Taskwechsel vielleicht vermeiden, wenn man eine zeitgesteurte Schleife statt Wait verwendet?
Und was ist mit den Timeouts, z.B bei der Ereignisstruktur? Soll man vielleicht statt Wait eine leere Eeignisstruktur verwenden, die nur den Case Timeout enthält? Vorstellen kann ich mir das nicht, daß das was bringt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2012, 09:37
Beitrag #4

Falk Offline
ja, das bin ich...
***


Beiträge: 343
Registriert seit: Jan 2006

8.0 :: 201x ::202x
2006
DE_EN


Deutschland
RE: Wait im UI Thread (?)
(01.02.2012 20:50 )dimitri84 schrieb:  "... verursachen sowohl Wait, Metronom als auch Tick Count einen Taskwechsel in den GUI thread" ?

Ich kann es mir nicht vorstellen. Vielleicht einfach mal bei NI anfragen und die Aussage bewerten lassen?

Schöne Grüße
Falk

Currently: zzzZZZZZZZZ
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2012, 14:18
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Wait im UI Thread (?)
"Probieren geht über studieren". Danach ist der Aufruf von Wait immerhin 30 mal schneller als der Aufruf eines Eigenschaftsknotens - siehe unten. Also Entwarnung, kein Grund zur Panik.
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2012, 18:04 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2012 18:06 von dimitri84.)
Beitrag #6

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
RE: Wait im UI Thread (?)
Ich werde das in der Tat mal mit dem NI Support besprechen bei nächster Gelegenheit - und berichten.

Vielleicht ist der Satz auch einfach anders zu verstehen: Nicht die Funktion "Wait" selbst verursacht den Taskwechsel, sondern das Betriebssystem nutzt die Verschnaufpause um ausstehende UI Aufgaben auszuführen. (Das würde Luckis Test begründen, denn da ist einfach nix zu tun, wenn gewartet wird.)

Ich erzähl dann was NI sagt.

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.05.2012, 12:04
Beitrag #7

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
RE: Wait im UI Thread (?)
Hab NI zu dem Thema befragt: Ja, es stimmt. Die drei benannten Funktionen werden im UI-Thread ausgeführt.

Mit Timed-Loops fährt man wohl tatsächlich manchmal besser.

Gruß

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.05.2012, 13:15 (Dieser Beitrag wurde zuletzt bearbeitet: 01.05.2012 13:24 von rolfk.)
Beitrag #8

rolfk Offline
LVF-Guru
*****


Beiträge: 2.306
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Wait im UI Thread (?)
(26.01.2012 17:48 )dimitri84 schrieb:  Hallo,

ich habe vom LabVIEW Support von peak-system.com die Aussage bekommen:

"Wenn ich richtig informiert bin, dann verursachen sowohl Wait, Metronom als auch Tick Count einen Taskwechsel in den GUI thread. Das kann unter umständen sehr negativ sein."

Jetzt bin ich verwirrt. Der UI Thread ist doch der böse mit der geringen Prio, der einem die Programmperformance torpediert. Deswegen auch die Misere mit property nodes. Das passt nicht in meine Weltansicht wo die Waits die Guten sind und ungebremste Schleifen die Bösen.



Soll die jetzt ohne wait laufen? Nää...



Gruß Dimitri

Ein Wait verursacht garantiert keinen Taskwechsel, denn der ganze LabVIEW Prozess ist genau ein Task und kann deshalb nicht einfach so in einen anderen Task umschalten. Ein Wait setzt aber den aktuellen Codejunk in eine Warteliste und erlaubt anderen Codejunks um ausgeführt zu werden. Das geht weiter dann Threads da LabVIEW bevor es Multhreading vom OS spendiert bekam schon ein eigenes, allerdings kooperatives Multithreading hatte. Sogenannte Clumps (in sich nicht weiter teilbare Codeteile) werden von LabVIEW in eine Execution Queue gestellt, um ausgeführt zu werden. Ein Wait bewirkt ein explizites Hintenanstellen vom aktuellen Clump in eine Wartequeue, und gibt anderen Clumps die Gelegenheit ausgeführt zu werden, sofern die dann bestehen. In jedem Fall scheduled LabVIEW den Clump um nach der Wartezeit wieder aufgeweckt (in die Execution Queue gesetzt) zu werden. OS Multithreading macht das alles noch etwas komplexer aber verändert am Prinzip nicht viel.

Eine Wait gibt also tatsächlich anderen Teilen in LabVIEW die Möglichkeit um ausgeführt zu werden und das kann auch DER UI Thread sein. Aber hier muss ausdrücklich darauf hingewiesen werden, dass das ein KANN ist und nicht ein MUSS. Und auch wenn Du kein Wait in den Code setzt wird der UI Thread typischerweise eine Anzahl mal pro Sekunde getriggert, sofern denn etwas im UI Thread auszuführen ist. Die Aussage dass ein Wait oder ähnliches automatisch in den UI Thread wechselt ist also völlig falsch. Es gibt die Kontrolle über den aktuellen Thread explizit auf und das KANN bewirken dass der UI Thread aktiviert wird, aber es MUSS nicht so sein und auch ohne Wait wird der UI Thread regelmässig aktiviert.

Die Aussage vom Support ist in diesem Sinne faktisch falsch und klingt eher nach einer faulen Entschuldigung für etwas was sie in ihrem Produkt verbrochen haben.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.05.2012, 07:05
Beitrag #9

dimitri84 Offline
Astronaut
*****


Beiträge: 1.496
Registriert seit: Aug 2009

2020 Developer Suite
2009
DE_EN

53562
Deutschland
RE: Wait im UI Thread (?)
Danke rolfk, sehr hilfreich.

„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Frage zur Architektur: Statemachine und Wait for Events tuhpon 6 4.626 18.03.2024 16:14
Letzter Beitrag: tuhpon
  Wait und Wait-Until, seltsame Effekte, ich verstehs einfach nicht... catbull 3 3.584 24.09.2018 20:56
Letzter Beitrag: Lucki
  Wait Befehl LabViewPete 3 4.579 17.09.2015 09:12
Letzter Beitrag: Lucki
  Fehler bei "Wait on Asyn. Call" D_Sev 11 9.386 20.11.2013 16:37
Letzter Beitrag: D_Sev
  "exit vi" - finde den thread nich mehr... gottfried 5 5.351 01.08.2013 08:24
Letzter Beitrag: gottfried
  Prozessor/Thread Zuweisung win98 7 7.599 02.08.2011 13:43
Letzter Beitrag: Rene_B

Gehe zu: