Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Critical Section in VFP
Message
De
05/07/2000 16:59:57
 
 
À
05/07/2000 15:56:38
Information générale
Forum:
Visual FoxPro
Catégorie:
Fonctions Windows API
Divers
Thread ID:
00387913
Message ID:
00388547
Vues:
15
>>you can easily implement Critical sections using API calls yourself as long as you can get the structure size worked out beforehand. Since Windows creates the strucutre and maintains it the only thing required is a string buffer large enough to hold it and a way for you to persist it (as a global var).
>>
>
>While this works in this instance, I'd recommend using a static memory block allocation as a general approach, to avoid having VFP shift the structure around in memory. CLSHEAP can create a heap and alocate space on it that VFP won't mess with directly, nd you can form structures in a string and copy them between the static block and normal VFP memvars using the methods from the class, or the UDFs that accompany it. It uses RtlMoveMemory() to handle the transfers between the static block and VFP memvars, so no add-on .DLLs or controls are needed.
>
>>+++ Rick ---
>>
>>
>>>>>We need to have a multi-use com server but need to place a critical section in one area of the code which we do not want the multiple instances to trample on each other.
>>>>
>>>>There's a new undocumented (though Calvin demoed it last year, so I guess that means I can talk about it :-) SYS function in SP3 that deals with this, SYS(2336). IIRC, the parameters are 1 to start a CS, and 0 to end it.
>>>
>>>
>>>That's great. Are there any changes from 6 to 7 other than the documentation? BTW, what is the default, if you don't pass a parameter?

I was wondering when you were going to chime in. :) I like the idea of using CLSHEAP for the reasons you have given. Are there any examples of using CLSHEAP with critical sections that you can point me to?
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform