+ Rispondi
Risultati da 1 a 5 di 5

Discussione: [C/C++] Cambiare la priorità di un thread FMOD

  1. #1
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    47

    [C/C++] Cambiare la priorità di un thread FMOD

    Salve a tutti,
    ho il seguente problema: devo sentire un suono per 10 o 5 millisecondi e siccome alcune volte non lo sento ho pensato che cambiando la priorità del thread in THREAD_PRIORITY_TIME_CRITICAL , mi sarebbe stata garantita la sicurezza di sentire il suono, della durata di 10 ms, ogni volta che lo suonavo.
    Dato che non mi sembra che sia cambiato molto, vi chiedo gentilmente di dare un occhiata al mio codice e vedere se realmente ho impostato la priorità che voluta. Il thread che voglio rendere prioritario è FSOUND_SetMute().
    Le librerie che ho usato son le FMOD:
    Codice:
     int main()
    {
    void *hCT=0;
    DWORD priority =0;
    
    FSOUND_SAMPLE *sample_1;
    FSOUND_Init(48000, 32, 0);
    sample_1 = FSOUND_Sample_Load(FSOUND_FREE, PATH_1, FSOUND_STEREO|FSOUND_LOOP_NORMAL, 0, 0);
    FSOUND_PlaySound(1, sample_2); 
    FSOUND_SetMute(1,TRUE);
    
    /****cambio priorità al thread FSOUND_SetMute()****/
    
    hCT = GetCurrentThread();
    SetThreadPriority(hCT,15);
    priority=GetThreadPriority(hCT);
    
    /*********************************************/
    
    FSOUND_SetMute(1,FALSE);
    for(i=0;i<2000000;i++){
       }
    
    FSOUND_StopSound(1);
    FSOUND_Close(); 
    }
    grazie .
    Ultima modifica di bottomap; 26-06-2007 alle 10:27

  2. #2
    Moderatore Globale L'avatar di AntonioGiuliana
    reputazione complessiva: 38 38

    Messaggi
    6,737
    In realta' la variabile restituita dalla GetCurrentThread deve essere di tipo HANDLE e non puntatore a void. Deve essere quindi

    HANDLE hCT = NULL;

    In ogni caso, hai esaminato il valore di priority per capire se e' cambiato?

    E poi, sei sicuro che il thread corrente sia quello in cui effettivamente viene trattato il suono? Puo' darsi che la libreria crei un proprio thread per fare cio' e che la sua esecuzione sia gestita da un flag controllato dalla SetMute. In questo caso, hai solamente aumentato la priorita' del thread che attende e non di quello che suona.

    Una volta che hai modificato la priorita' di un thread, in ogni caso, devi rimettere a posto la priorita' al valore normale ...



    Antonio GIULIANA

  3. #3
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    47
    Grazie molte Antonio,
    La variabile priority mi da in effetti il valore 15, ma, come tu suggerivi,
    non sono sicuro che il thread corrente sia quello di setmute, il problema è che non so come prendere l'handle del thread di setmute.
    dall'help delle librerie FMOD so che la funzione setmute ritorna TRUE se eseguita correttamente oppure FALSE.
    Sapresti consigliarmi qualcosa in merito?
    Ti ringrazio nuvamente

  4. #4
    Moderatore Globale L'avatar di AntonioGiuliana
    reputazione complessiva: 38 38

    Messaggi
    6,737
    Prova a compilare il progetto, eseguirlo e controllare con un tool come ProcExplorer di sysinternal.com per comprendere se esistono altri thread ...
    Antonio GIULIANA

  5. #5
    Nuovo della community
    reputazione complessiva: 1 1

    Messaggi
    47
    Ho installato ProcExplorer ma faccio molta fatica ad identificare il thred del set mute.
    i threads che compaiono associati al mio programma sono 6 tra questi alcuni sono:
    "dsound.dll!DirectSoundCreate+0x6d08"
    "fmod.dll!FSOUND_Sample_Get+0x1ba6"
    sembrerebbe che a FSOUND_PlaySound e a FSOUND_SetMute non sia associoato nesun thread.

    Inoltre ho provato a printare il valore di hCT per saper l'handle che ho reso prioritario ma mi appare in esadecimale il seguente numero :ff ff ff fe che tra gli handle visualizzati nel ProcExplorer non compare.

    ho provato a usare la funzione GetThreadId() per saper che id ha il currente thread, ma il mio compilatore non la riconosce nonostante abbia incluso windows.h e kernel32.lib.

    che potrei fare?
    grazie di nuovo

+ Rispondi

Discussioni Simili

  1. Thread e ProgressBar ...errore...!!!
    Di w_t nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Messaggio: 07-07-2006, 10:51
  2. [Win32] Programmare con thread
    Di Rups nel forum C/C++
    Risposte: 0
    Ultimo Messaggio: 10-05-2006, 11:06
  3. Cambiare un controllo
    Di lelo74 nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Messaggio: 14-04-2006, 00:43
  4. [Win32] Chiusura thread
    Di Rups nel forum C/C++
    Risposte: 5
    Ultimo Messaggio: 05-04-2006, 13:06
  5. [Win32] priorità di un thread
    Di barraluca nel forum C/C++
    Risposte: 1
    Ultimo Messaggio: 28-05-2005, 10:21

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi