TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: Denis Tonn
from: Peter Fitzsimmons
date: 1996-08-12 12:29:12
subject: Semaphore

DT>  If you want to use this technique, then I recommend that either 
 DT> you totally understand all the resources required for *ANY* API's you 
 DT> call while within a critsec, or you don't call any API's at all while 
 DT> within the critical section.

You're being too easy on him Denis.

DosEnterCritSec() should not be used. Period.  Only lazy programmers use
it,  usually because they don't really understand how os/2 works (and
certainly don't understand SMP); they are bound to write crappy software.

Recently,  someone in one of the comp.programmer.os2 conferences had to
deal with a third party DLL that was using DosCritSec -- he was calling it
from his PM (perhaps even WPS class) program.  The DLL was using
DosEnterCritSec to prevent reentrancy,  he thinks.   I was totally
disgusted.  I think we figured out a hack for him to replace it with a
semaphore (dllrname and a whole bunch of fwdstamp's).

There was one case under 16 bit os/2 that it was required (to free a
thread's stack at the right time),  but this technique is not required
under 32bit os/2.

32bit semaphores are pretty frigin quick too,  and can become even faster
(even faster than critsec for that matter) if you use a LOCK'ed local
reference counter before the DosSem...() calls.  IBM's C compilers use such
a sem internally.


--- Maximus/2 3.00
* Origin: Sol 3 * Toronto * V.32 * (905)858-8488 (1:259/414)
SEEN-BY: 50/99 270/101 620/243 625/100 711/401 409 410 413 430 808 809 934
SEEN-BY: 711/955 712/407 515 624 628 713/888 800/1
@PATH: 259/414 400 99 250/99 3615/50 396/1 270/101 712/515 711/808 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.