예제 #1
0
static void
eventlock(Lock *l)
{
	// Allocate event if needed.
	if(l->event == 0)
		initevent(&l->event);

	if(xadd(&l->key, 1) > 1)	// someone else has it; wait
		stdcall(WaitForSingleObject, l->event, -1);
}
예제 #2
0
static void
eventlock(Lock *l)
{
	// Allocate event if needed.
	if(l->event == 0)
		initevent(&l->event);

	if(runtime·xadd(&l->key, 1) > 1)	// someone else has it; wait
		runtime·stdcall(runtime·WaitForSingleObject, 2, l->event, (uintptr)-1);
}
예제 #3
0
/* initialize mutex and event --------------------------------------------------
* create mutex and event handles
* args   : none
* return : none
*-----------------------------------------------------------------------------*/
extern void openhandles(void)
{
    /* mutexes */
    initmlock(hbuffmtx);
    initmlock(hreadmtx);
    initmlock(hfftmtx);
    initmlock(hpltmtx);
    initmlock(hobsmtx);
    initmlock(hlexmtx);

    /* events */
    initevent(hlexeve);
}