| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| subject: | Mutex semaphores |
-=> Quoting Darin McBride to Phil Crown <=-
PC> return rc; // A calling thread is pre-empted here before returning rc.
PC> // A second threads comes along and completes the
PC> // function before the first thread has finished,
PC> // thus causing rc to contain invalid data.
PC> // Is this possible?
DM> No.
DM> You only require semaphores to protect global and static data, not
DM> local data. Since RC is a ULONG allocated on the stack, it will be
DM> only on the thread's local stack. So when thread A calls someFn(), a
DM> ULONG will be placed on thread A's stack. OS/2 pre-empts thread A,
DM> and thread B continues, calling someFn(). This time the arguments say
DM> not to call DosSleep(), so it gets all the way through - but this time
DM> the ULONG is on thread B's stack - seperate from thread A's stack.
DM> However, global and static data are stored in another place entirely,
DM> with one instance being visible to both (all) threads. If there is
DM> any danger of global data being written to by one thread while another
DM> is trying to read it (or write), then you need a semaphore to protect
DM> it. (If everyone just reads it, then no semaphore is required,
DM> obviously.)
DM> If str is a global pointer, then yes, you need to protect it.
str is defined in a class. The mutex semaphore seems to have fixed my
traps.
Thanks for your help!
Phil Crown
pcrown{at}airmail.net
http://web2.airmail.net/pcrown/
--- Blue Wave/OS2 v2.30
* Origin: * MacSavvy OS/2 BBS * Dallas, Texas * 972-250-4479 * (1:124/1208)SEEN-BY: 50/99 270/101 620/243 625/160 711/401 409 410 413 430 808 809 934 SEEN-BY: 711/955 712/407 515 624 628 713/317 800/1 @PATH: 124/1208 1 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™.