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 

DLL Aufruf, "In beliebigem Thread" vs. "Im UI-Thread" (Beispiel fileVersionInfo.llb)



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!

12.12.2012, 08:18 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2012 08:20 von dali4u.)
Beitrag #1

dali4u Offline
LVF-Stammgast
***


Beiträge: 298
Registriert seit: Aug 2008

12SP1, 14SP1
2007
DE


Deutschland
DLL Aufruf, "In beliebigem Thread" vs. "Im UI-Thread" (Beispiel fileVersionInfo.llb)
Hi,

ich habe eine Frage zur fileVersionInfo.llb (.\vi.lib\platform\) und
den dortigen DLL aufrufen. Es gibt im Internet auch Varianten dieser
LLB, bei denen z.B. der Aufruf der kernel32.dll:RtlMoveMemory geändert worden ist.
z.B: hier: http://www.labviewforum.de/Thread-Progra...8#pid38128

Bei den LLB von NI wird immer "In beliebigem Thread ausführen" verwendet.
Bei der anderen wird der Thread "Im UI-Thread ausführen" verwendet.

Ich habe hierzu
a) die NI Hilfe gelesen, b) bei MSDN die Infos zu UI-Threads, c) Wikipedia Thread
angeschaut, aber versteht den Unterschied nicht so wirklich.

- z.B: verstehe ich in der LV Hilfe nicht "Gibt an, dass der Knoten zum Aufruf externer
Bibliotheken vom aktuellen Thread in den Thread der Benutzeroberfläche wechseln soll."

- Es muss ja ein Grund haben, warum ein Anwender die NI llb derart geändert hat?

Ich verwendet zwar (erfolgreich) die von Rolf Kalbermatter hinterlegte Datei
in dem oben angegebenen Post, aber würde den Unterschied gerne besser verstehen.
Da sind glaube ich noch viele ???, kann aber schlecht sagen wo, da mir der Hintergrund fehlt.

Danke für Eure Hilfe
Stefan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.12.2012, 09:38 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2012 09:46 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: DLL Aufruf, "In beliebigem Thread" vs. "Im UI-Thread" (Beispiel fileVersionInfo.llb)
(12.12.2012 08:18 )dali4u schrieb:  Hi,

ich habe eine Frage zur fileVersionInfo.llb (.\vi.lib\platform\) und
den dortigen DLL aufrufen. Es gibt im Internet auch Varianten dieser
LLB, bei denen z.B. der Aufruf der kernel32.dll:RtlMoveMemory geändert worden ist.
z.B: hier: http://www.labviewforum.de/Thread-Progra...8#pid38128

Bei den LLB von NI wird immer "In beliebigem Thread ausführen" verwendet.
Bei der anderen wird der Thread "Im UI-Thread ausführen" verwendet.

Ich habe hierzu
a) die NI Hilfe gelesen, b) bei MSDN die Infos zu UI-Threads, c) Wikipedia Thread
angeschaut, aber versteht den Unterschied nicht so wirklich.

- z.B: verstehe ich in der LV Hilfe nicht "Gibt an, dass der Knoten zum Aufruf externer
Bibliotheken vom aktuellen Thread in den Thread der Benutzeroberfläche wechseln soll."

- Es muss ja ein Grund haben, warum ein Anwender die NI llb derart geändert hat?

Ich verwendet zwar (erfolgreich) die von Rolf Kalbermatter hinterlegte Datei
in dem oben angegebenen Post, aber würde den Unterschied gerne besser verstehen.
Da sind glaube ich noch viele ???, kann aber schlecht sagen wo, da mir der Hintergrund fehlt.

Danke für Eure Hilfe
Stefan

Die meisten Windows APIs sind Thread safe und ich sehe keinen Grund warum das bei diesen APIs nicht so sein sollte. In dieser Hinsicht sind die VIs die die CLN im UI Thread ausführen wahrscheinlich aus purer Ignoranz so. Da wollte jemand das Rad neu erfinden, einfach weil es cool ist, hat aber vergessen die CLN auf multithreaded zu konfigurieren (UI Thread ist default, da sicherer).

In diesem Fall macht es wenig aus da Du diese Funktionen wohl kaum in einer Loop konstant immer wieder aufrufst. Im UI Thread is durch das Threadcontext-switching bedingt halt langsamer (mehrere Microsekunden pro Aufruf) aber auch sicherer wenn das API irgendwelche globalen Datenstrukturen anspricht.

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
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Run in UI-Thread in 8.5 HarryPython 8 7.280 25.01.2008 14:36
Letzter Beitrag: HarryPython

Gehe zu: