コード例 #1
0
ファイル: TerminalWin.c プロジェクト: rn10950/RetroZilla
Boolean
SpawnSDThread(ThreadEntryProcPtr threadProc, ThreadID *tid)
{
	OSErr			err;
	
	err = NewThread(kCooperativeThread, (ThreadEntryProcPtr)threadProc, (void*) nil, 
					0, kCreateIfNeeded, (void**)nil, tid);
				//  ^---- 0 means gimme the default stack size from Thread Manager
	if (err == noErr)
		YieldToThread(*tid); /* force ctx switch */
	else
	{
		return false;
	}
	
	return true;
}
コード例 #2
0
pascal OSStatus MacOpMessageLoop::sMacMessageLoopHandler(EventHandlerCallRef nextHandler, EventRef inEvent, void *inUserData)
{
	OSStatus retVal = noErr;
	ThreadID currThread = 0;
	GetCurrentThread(&currThread);

	if (gMainThreadID == currThread)
	{
		URestoreQDState savedState;

		MacOpMessageLoop *messageHandler = (MacOpMessageLoop *)inUserData;
		retVal = messageHandler->MessageLoopHandler(inEvent);
	}
	else
	{
		::PostEventToQueue(gMainEventQueue, inEvent, kEventPriorityLow);
		YieldToThread(gMainThreadID);
	}

	return retVal;
}