(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.