Yes, but unless a task is using 100% of the CPU...
I think we may be using the same words for different things. An example of "block multithreading" would be if Wimp_Init required a table of addresses to jump to for individual events. This would mean the Wimp would not need to encode the event and the task would not need to decode it, thuse removing one bottleneck.
The ARM does not contain multithreading hardware, so any task running on an ARM CPU core has access to 100% of that core (less SVC, FIQ and IRQ).
When you say, "for precisely the reasons you describe", do you mean to overcome poor porgramming practices?