The following compatibility's requirements should be considered before running an application in multi-processor mode:
In an OS/2 for SMP environment, this technique will not work because it is possible that two or more threads could be executing the same INC instruction, receiving the same results in each processor's or thread's flag register and thinking that they have the semaphore.
The above compatibility requirements apply only to multi-threaded applications, and therefore do no apply to DOS and WINOS2 applications. However, you are strongly encouraged to write 32-bit multi-threaded applications for better performance and portability on OS/2 for SMP.
Given the possibility that some set of applications may use one of these techniques, OS/2 for SMP Version 3 provides a mechanism whereby these multi-threaded applications can execute in UP mode. Only one thread of that process would be allowed to execute at any given time. That thread could execute on any one of the processors. MARKEXE can be used to mark the EXE file as uniprocessor only. OS/2 forces the process to run in the uniprocessor mode when the loader detects that the EXE file has been marked as uniprocessor only.
Note: OS/2 Warp Version 3 (non-SMP) still ships the EXECMODE utility.