<snip>

Rebol [
 Name: 'Number
 Title: "Title"
 File: %Number.r
 Author: "Andrew Martin"
 eMail: [EMAIL PROTECTED]
 Date: 17/Aug/2002
 ]

Number: has [File Number] [
 File: %Number.txt
 if not exists? File [
  save File 0
  ]
 Number: load File
 Number: Number + 1
 save File Number
 Number
]

</snip>

To prevent more than one session obtaining the same number (assuming the
file is stored on shared media) some form of locking may be required. The
following code could serve as the basis for such:

<code>

lock-index: function [path] [lock?] [
     lock?: false
     repeat cnt 5 [
          either none? attempt [rename join path %index.dat %lock.dat] [
               wait 1
               print reform ["Waited:" cnt]
          ][
               lock?: true
               break
          ]
     ]
     if not lock? [print reform ["Could not lock" join path %index.dat]]
]

;    ... code that reads / writes path/lock.dat

unlock-index: func [path] [
     if none? attempt [rename join path %lock.dat %index.dat] [
          print reform ["Could not unlock" join path %lock.dat]
     ]
]

</code>


Regards,


     Ashley

-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to