I'm not sure I trust RLock(). I'd probably use a "Status" field that indicates the record is unprocessed, in process, or processed. This might be a good use case for Christof's DMult multi-threading utility
You still have to use either RLOCK() or a SET REFRESH value of -1 to read the status field, because otherwise VFP will lie to you about the current value of that field. Unless you move away from a record, you get the same value for hours in VFP. Even if you move away, the cache is considered to be the truth for up to how many seconds SET REFRESH indicates.
Christof