![]() | |
![]() |
![]() ![]() |
Politica de confidentialitate |
|
![]() | |
• domnisoara hus • legume • istoria unui galban • metanol • recapitulare • profitul • caract • comentariu liric • radiolocatia • praslea cel voinic si merele da aur | |
![]() |
![]() |
||||||
SERVICII DE SINCRONIZARE | ||||||
![]() |
||||||
|
||||||
j6n24nl GENERALITATI DESPRE SERVICIILE DE SINCRONIZARE Serviciile de sincronizare ofera programelor de aplicatie posibilitatea coordonarii accesului la fisierele din retea si la alte resurse. Fisiere antet necesare: # include <nit.h> IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII Aplicatiile pot sa aloce fisiere intregi, inregistrari fizice La apelul functiilor de alocare, programul de aplicatie poate specifica un interval maxim de timp in care sa se efectueze alocarea (in unitati de aproximativ 1/18 sec). Apelul functiei de alocare esueaza numai daca resursele solicitate nu au putut fi alocate in acel interval de timp. Pentru ca aceasta facilitate sa poata fi folosita, trebuie ales modul de alocare 1. Resursele logice sint simple nume. Alocarea unei resurse logice nu implica decit alocarea numelui respectiv, nu si a resurselor fizice desemnate de acest nume (care nici nu sint cunoscute de sistem). Un program concurent nepoliticos poate intotdeauna ignora faptul ca resursa logica a fost alocata altcuiva, si poate deci produce necazuri. Stabilirea modului de alocareIIIIIIIIIIIIIIIIIIIIIIIIIIIII Sint doua moduri de alocare posibile: modul 0, compatibil cu toate versiunile Netware, si modul 1, valabil de la versiunea int GetLockMode (void) void SetLockMode (BYTE lockMode) IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII Toate resursele care pot fi alocate unei aplicatii la un moment dat sint inregistrate intr-o tabela de resurse alocabile, tabela care este specifica statiei de lucru respective. O resursa poate fi intii inregistrata in tabela, urmind ca toate resursele de acelasi fel sa fie alocate deodata, sau inregistrarea resursei poate coincide cu alocarea ei. int LogFile (char * fileName, fileName numele fisierului care trebuie inregistrat; poate fi un nume complet (VOL:ROOT\DIR\...\NAME.TYP) sau un nume relativ la discul implicit. Lungimea maxima este de 255 caractere, inclusiv NULul terminator. lockDirective 0x00 inregistreaza fisierul Rezultat: int LogLogicalRecord (char * logicalRecordName, logicalRecordName numele resursei logice (max. 100 caractere, inclusiv NULul terminator). lockDirective 0x00 inregistreaza resursa logica Rezultat: int LogPhysicalRecord (int fileHandle, fileHandle numarul de fisier intors de apelul functiilor DOS Rezultat: IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII int LockFileSet (WORD timeoutLimit) int LockLogicalRecordSet (WORD timeoutLimit) int LockPhysicalRecordSet (WORD timeoutLimit) Alocarea esueaza daca cel putin una dintre resursele solicitate este deja alocata exclusiv unei alte aplicatii. Rezultat: IIIIIIIIIIIIIIIIIIIIIIIIIIIII Se poate elibera fiecare resursa alocata in parte, sau toate resursele de acelasi fel deodata. Functiile care elibereaza toate resursele de un anume fel au numele terminat cu ...Set. Resursele eliberate de aceste functii nu sint eliminate din tabela de resurse alocabile a statiei de lucru. int ReleaseFile (char * fileName) int ReleaseLogicalRecord (char * logicalRecordName) int ReleasePhysicalRecord (int fileHandle, void ReleaseFileSet (void) void ReleaseLogicalRecordSet (void) void ReleasePhysicalRecordSet (void) Eliminarea resurselor din tabela de resurse alocabile Functiile urmatoare elimina o resursa (sau toate resursele de acelasi fel) din tabela de resurse alocabile unei statii de lucru, nu inainte de a le elibera. Fisierele care in momentul eliminarii din tabela de alocare erau deschise sint automat inchise. int ClearFile (char * fileName) int ClearLogicalRecord (char * logicalRecordName) int ClearPhysicalRecord (int fileHandle, void ClearFileSet (void) void ClearLogicalRecordSet (void) void ClearPhysicalRecordSet (void) IIIIIIIII Sistemul Netware pune la dispozitia utilizatorilor posibilitatea de a defini si folosi semafoare; acestea pot fi folosite pentru a implementa cele mai diferite protocoale de sincronizare. Etapele lucrului cu un semafor: int OpenSemaphore (char * semaphoreName, semaphoreName numele semaforului (max. 127 de caractere, inclusiv NULul terminator) initialValue valoarea initiala a semaforului; acest parametru nu se ia in considerare decit daca semaforul nu exista si este creat. Sint permise valori intre 1 si 127. Rezultat: int ExamineSemaphore (long semaphoreHandle, Examineaza un semafor deschis; depune in semaphoreValue, respectiv openCount, valoarea contorului de semafor, respectiv numarul de procese care au deschis semaforul. Rezultat: int WaitOnSemaphore (long semaphoreHandle, Incearca sa decrementeze contorul asociat unui semafor; daca dupa decrementare acesta este mai mare sau egal cu zero, atunci procesul care a apelat Wait continua. In caz contrar, procesul este depus intr-o coada de asteptare asociata semaforului; coada avanseaza la fiecare apel Signal pentru acelasi semafor. Daca procesul petrece la coada mai mult de timeoutLimit unitati de Rezultat: int SignalSemaphore (long semaphoreHandle) Incrementeaza contorul asociat semaforului; daca in coada de asteptare se afla vreun proces, primul proces din coada este deblocat. Rezultat: int CloseSemaphore (long semaphoreHandle) Inchide un semafor; pentru ca programul sa recistige accesul la acel semafor, trebuie sa apeleze iarasi la OpenSemaphore. Daca acest proces era ultimul care folosea semaforul, atunci semaforul este distrus. Rezultat: |
||||||
![]() |
||||||
![]() |
||||||
|
||||||
|
||||||
Copyright© 2005 - 2025 | Trimite document | Harta site | Adauga in favorite |
![]() |
|