01-25-2007 02:37 AM
01-25-2007 04:46 AM
01-25-2007 05:34 AM
What do you mean by "interrupt"? The DLL has its own memory space for its internal computations, so LV should not touch that memory.
@sylviane wrote:
How can I be sure that Labview will not interrupt this function call ?
01-25-2007 07:42 AM
@tst wrote:
What do you mean by "interrupt"? The DLL has its own memory space for its internal computations, so LV should not touch that memory.
@sylviane wrote:
How can I be sure that Labview will not interrupt this function call ?
If you pass a pointer to a buffer into it, you need to be sure not to disturb that buffer.
The CLF node, as far as I remember, executes in the UI thread (unless it is configured as reentrant), so it should block your UI until it finishes.
All the previous answers are right so far. LabVIEW does NOT interrupt DLL calls unless the DLL does do some sort of asynchronous event function or callback into LabVIEW itself.
What the OP probably means is general suspension of the thread, where the DLL call runs in, through the OS. There is virtually no way from the caller to prevent Windows from taking control from any thread and giving control to other threads to allow Windows preemtive multitasking to work. If you have the source of the DLL itself, there are some WinAPI calls you can add into it, that can temporarily eleviate the priority of the current thread so that Windows is less likely (please note: less likely not completely impossible) to grab execution control and pass it to other threads/tasks in the system.
But if your task in the DLL is so time critical that preemptive multitasking can disturb it, it is really to time critical for a non real-time OS and you should consider a more dedicated solution such as some LabVIEW real-time solution (or Linux realtime or whatever depending how much time and/or money you can invest).
Rolf Kalbermatter