.


:




:

































 

 

 

 


,




CS , , . 8.1, , (deadlock), , .

, (lock) . :

, , .

, X . , : "X , ".

, . . , .

( CS), . , , " ".

, :

static struct {

/* : . */

HANDLE guard; /* . */

struct ListStuff;

} ListA, ListB;

DWORD WINAPI AddSharedElement(void *arg) /* . */

{ /* : , . */

WaitForSingleObject(ListA.guard, INFINITE);

WaitForSingleObject(ListB.guard, INFINITE);

/* */

ReleaseMutex(ListB.guard);

ReleaseMutex(ListA.guard);

return 0;

}

DWORD WINAPI DeleteSharedElement(void *arg) /* . */

{

WaitForSingleObject(ListB.guard, INFINITE);

WaitForSingleObject(ListA.guard, INFINITE);

/* */

ReleaseMutex(ListB.guard);

ReleaseMutex(ListA.guard);

return 0;

}

. AddSharedElement , , , , , DeleteSharedElement , AddSharedElement. , , ReleaseMutex, .

, , .

, , " ", WaitForSingleObject , , , "" , . , , .

, , " " , , . , . , , , .

WaitForMultipleObjects fWaitAll, True, , . CRITICAL_SECTION .

: CRITICAL_SECTION

, CRITICAL_SECTION . , , , - , , , . , . , .

, , , .

, CS .

, , .

WaitForMultipleObjects, , .

, , , . CS .

, , CS , . 9.





:


: 2015-09-20; !; : 420 |


:

:

.
==> ...

1715 - | 1500 -


© 2015-2024 lektsii.org - -

: 0.014 .