DevCon for OS/2 - Developer Connection |
Operating systems: ArcaOS, eComStation, IBM OS/2 Warp |
|
|
Development of SMP-safe applications and multi-thread applications are different things.
Start from reading SMP.INF
Useful articles
FAQ
Q1: What is the difference between _beginthread and DosCreatThread? When using the _beginthread and _endthread functions, you must specify the /Gm+ compiler option to use the multithread libraries. An alternative to this function is the OS/2 DosCreateThread API. If you use DosCreateThread, you must also use a #pragma handler statement for the thread function to ensure proper C exception handling. You should also call the _fpreset function at the start of the thread to preset the 387 control status word correctly. Using DosCreateThread requires that you use _endthread to terminate the thread.
Q2: How to create SMP-safe application?
Q3: How to organize SMP-safe write to file? volatile int InStatusLine = 0; // Use __lxchg to implement fast-RAM semaphores to serialize access // to a critical resource (so that only one thread can use it at a time). while (__lxchg(&InStatusLine, 1)) { DosSleep(1); } // write to file here // restore the value __lxchg(&InStatusLine, 0);
Q4: Maximal quantity of threads? |
|
||
(C) OS2.GURU 2001-2024