MOO-cows Mailing List Archive
[Prev][Next][Index][Thread]
Re: Mutual Exclusion
On Tue, 7 Nov 1995, CJ Holmes wrote:
> Is there a way to gurantee that only one task can access a variable at a
> given time?
>
> I have a financial-flow simulation where hundreds of robotic "consumers"
> are engaging in various transactions. I suspect I'm getting into trouble
> when I check an account to see if it has the required sum of currency
> withing, and then subtract from it (in the case of a debit). What if
> another task modifies the account between those two statements? Is there a
> way I can "lock" the variable in question?
That is already guaranteed with the design of LambdaMOO. It is a
non-preemptive multitasking operating system, much like Windows 3.11 and
predecessors.
What that really means is that the only way you can have a problem is if
you design your code wrong.
ie. Wrong design:
Variable Current Balance (CB) 1000
Robot A Reads CB (1000)
you suspend()
Robot B Reads CB (1000)
Robot B Deducts 400
Robot B Writes CB (600)
task ends
Robot A Deducts 100
Robot A Writes CB (900)
task ends
Basically, all you need to ensure is that you do not suspend between
reading the variable, and writing to the variable, and all is well :^)
Regards,
Ian.
+-------------------------------------------------------------------------+
| Ian Macintosh | P.O. Box 24-036 | Anything really worth |
| General Manager | Royal Oak | doing, is worth doing |
| Sytek New Zealand Ltd | Auckland 1 | badly. - Duncan Shaw |
| Tel : +64 9 480-3034 | | Mobile : +64 25 836-230 |
+-------------------------------------------------------------------------+
Follow-Ups:
References:
Home |
Subject Index |
Thread Index