.


:




:

































 

 

 

 





, , (condition variable model, CV model), (signal) (broadcast) . . , , . .

, , , , .

.

STATE_TYPE, , (state variables), , , 8.2.

, .

, (condition variable predicates), (), . , : " ", " ", " ". , ( ""). . ( ) , .

, ( cvp, ). , , , , . , , , . , .

Windows 9x Windows NT. SignalObjectAndWait.

PulseEvent, , - Microsoft (. MSDN), . , () , SetEvent.

typedef struct _state_t {

HANDLE Guard; /* , . */

HANDLE CvpSet; /* , cvp(). */

/* , , . */

struct STATE_VAR_TYPE StateVar;

} STATE_TYPE State;

/* , . */

/* , . */

WaitForSingleObject(State.Guard, INFINITE);

/* , , */

/* CV. */

/* : .*/

State.StateVar.MsgCount += N;

PulseEvent(State.CvpSet);

ReleaseMutex(State.Guard);

/* . */

/* . */

WaitForSingleObject(State.Guard, INFINITE);

while (!cvp(&State)) {

ReleaseMutex(State.Guard);

WaitForSingleObject(State.CvpSet, TimeOut);

WaitForSingleObject(State.Guard, INFINITE);

}

/* , , */

/* cvp(&State). */

/* , , .*/

ReleaseMutex(State.Guard);

/* . */





:


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


:

:

, .
==> ...

1547 - | 1388 -


© 2015-2024 lektsii.org - -

: 0.013 .