uCR supports a single C++ task with many threads. The execution model matches the applicable C++ draft standard execution model, with the addition of threads. Support for the standard libraries is not complete, but the minimum freestanding requirements are certainly provided. Portions of the larger ISO C and C++ standard libraries are added to the distribution as demand requires and time warrents.
For CPUs that support multiple protection modes, uCR applications run in the most privileged mode (usually called supervisor mode) with interrupts enabled. uCR provides means for protecting critical sections of code from interruption, and for managing the execution of threads. If the application chooses to use hardware protection, the application may implement system call gates, as long as uCR calls are made in supervisor mode.
uCR currently does not explicitly support multiprocessors, although it would work perfectly well in a message passing system. SMP support would corrupt the simple and correct uniprocessor synchronization features. However, this does not mean you cannot use uCR in multiprocessor computers. Just run a uCR application in each processor and provide drivers for the hardware IPC to allow your applications to communicate, and you are there.