Anuncios Google

[DUDA EN C] problema con threads

hola de nuevo estoy aqui preguntando an de decir que pregunto pero esque no funciona.

bueno en fin este es mi problema

tengo main_thread

que es el que realiza las comprobaciones

y print_thread

que imprime los textos y todo eso

el problema esque quiero parar los threads para que al mover el curson en mi menu no se mueva tambien en el XMB

uso en siguiente codigo que haye en un src de takka pero no se muy bien como funciona

void ThreadsStatChange( bool stat, SceUID thlist[], int thnum )
{
  int ( *request_stat_func )( SceUID ) = NULL;
  int i, j;
  SceUID selfid = sceKernelGetThreadId();
  if( stat ){
    request_stat_func = sceKernelResumeThread;
  } else{
    request_stat_func = sceKernelSuspendThread;
  }
  SceKernelThreadInfo status;
  for( i = 0; i < thnum; i++ ){
    bool no_target = false;
    for( j = 0; j < st_thnum_first; j++ ){
      if( thlist[i] == st_thlist_first[j] || selfid == thlist[i] ){
        no_target = true;
        break;
      }
    }
    sceKernelReferThreadStatus(thlist[i], &status);
    if( ! no_target ) ( *request_stat_func )( thlist[i] );
  }
}

para utilizarlo uso esto

sceKernelGetThreadmanIdList( SCE_KERNEL_TMID_Thread, thlist, MAX_NUMBER_OF_THREADS, &thnum );			//obtenemos la lista de threads	
            sceCtrlReadBufferPositive(&pad, 1);
			if(pad.Buttons != lastpad.Buttons)
			    {
				    lastpad = pad;
					if ((pad.Buttons & key_button) && (showMenu == S_OFF) && (showInfo == S_OFF) && (showFiHid == S_OFF) && (showFileList == S_OFF)) si todos los menus entan en OFF aparace el menu principal
					    {
						    showMenu = S_ON;							//aparecemos el menu
							sceKernelSuspendAllUserThreads();			//paramos los threads
						}
					else if ((pad.Buttons & key_button) && (showMenu == S_ON)) //si volvemos a presionar el boton asignado el menu desaparecera y los threads deverian volver a activarse
						{
							showMenu = S_OFF;				//desaparecemos el menu				
							ThreadsStatChange(true,thlist,thnum); // reactivamos los threads
						}

el problema esque cuando paramos los treads main_thread si funciona

pero print_thread y los demas se quedan pillados

si necesitas mas información aganmelo saber y desde ahorita gracias


Anuncios Google