void Win32SyncManager::ScheduleTask(Task next, bool atTermination){
	Task currTid = (Task)TlsGetValue(tlsCurrentTaskId);
	if(!atTermination)
		assert(runningTid == currTid);
	if(runningTid == next){
		if(atTermination){
			assert("Schedule running_tid at termination");
		}
		return;
	}

	Semaphore* currSem = 0;
	Semaphore* nextSem = syncVarIdManager->GetTaskSemaphore(next);
	//if(atTermination){
	//	assert(currSem->IsNull());
	//}
	if(!atTermination){
		currSem = syncVarIdManager->GetTaskSemaphore(runningTid);
	}
	runningTid = next;
	nextSem->AtomicUpDown(currSem);
	if(!atTermination){
		OnWakeup();
	}

	//nextSem->Up();

	//if(!atTermination){
	//	currSem->Down();	
	//	OnWakeup();
	//}
}