For modularity, I was thinking of breaking up my application into one EXE and a bunch of DLLs, each with a thread in it. Is there any problems with meeting realtime deadlines usign this approach? Do I have to set the priority of the DLLs themselves as well as the threads within the DLLs? Are there drawbacks to this method? Is this typical or do most applications just create one EXE? Thanks in advance for help on this question.
I've not heard of any issues concerning meeting scheduling needs when an app is broken into DLLs. CE 5.0 and earlier do have some virtual memory limitations when you have many DLLs, as each one takes a fixed amount of memory. Don't go overboard on DLLs and you should be ok there.
Focus on setting the priority of specific threads to keep your most important processes getting the attention they need. You can use Kernel Tracker to watch how your threads are working together if you experience any problems.
What you don't want to do is have small dlls, that will waste virtual memory space for you app and all other apps. Small here, if I recall correctly is 4k or less.
You cannot set the priority of dlls, you can only set the priority of threads.
The value is actually 64k. Any DLL requires 64k minimum of virtual space, so a 4k DLL (you can't make one any smaller due to page size) will still take up 64k of virtual space. Of course this only pertains to native DLLs (which I assume the original poster means due to his question about real time). Managed DLLs are memory mapped and take zero virtual space inherently.