Pagina 2 di 5 primaprima 1 2 3 4 ... ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 41
  1. #11
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non mi trovi affatto d'accordo ... sarà una mia cattiva abitudine, ma non parto dal codice scritto da altri, ma dalla lettura attenta della documentazione (e in questo caso c'è tanta documentazione) e dalle prove personali, in base a quello che leggo ...

    Ma, de gustibus ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  2. #12
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da oregon
    Non mi trovi affatto d'accordo ... sarà una mia cattiva abitudine, ma non parto dal codice scritto da altri, ma dalla lettura attenta della documentazione (e in questo caso c'è tanta documentazione) e dalle prove personali, in base a quello che leggo ...

    Ma, de gustibus ...

    lo stai dicendo ad uno che ha scritto documentazione per diversi anni e quindi capisco il tuo punto di vista; ma quando si ha fretta di raggiungere un obbiettivo, gli esempi ti risparmiano tanto tempo.
    Già mi sono ripromesso di ripassare il corso che avevo fatto di sistemi operativi su MINIX, visto che pian piano mi sto dimenticando tutto


    questo sembra molto interessante http://www.codeproject.com/KB/cpp/Wi...Threading.aspx

  3. #13
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da misterx
    questo sembra molto interessante http://www.codeproject.com/KB/cpp/Wi...Threading.aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #14
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    forse sbaglio qualcosa ma a me la CreateEvent() non funziona


    HANDLE hEvent;

    // thread consumatore

    if(capita qualcosa)
    {
    hEvent = CreateEvent ( NULL , false , false , "Event 10234" );
    SetEvent ( hEvent );
    }


    // thread scrittore su disco

    WaitForSingleObject ( hEvent , INFINITE );

    scrivi su disco

    CloseHandle ( hEvent );

  5. #15
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La CreateEvent va chiamata all'inizio del tuo programma e la CloseHandle alla fine.

    La SetEvent solo quando "capita qualcosa" ...

    A prescindere da questo però, dire "non funziona" non fornisce molti elementi per poterti rispondere ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #16
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    allora,
    quanto creo i mie 3 thread e creo anche l'evento: quando capita qualcosa nel thread consumatore setto l'evento in modo da informare il thread scrittore, ma mi chiedo: se non lo chiudo o resetto dopo che il thread scrittore ha fatto il suo corso non rimane ancora settato e quindi il thread scrittore continua a loopare inutilmente?

    Debuggando step by step io poi noto che l'handle della CreteEvent() è sempre NULL

  7. #17
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da misterx
    Debuggando step by step io poi noto che l'handle della CreteEvent() è sempre NULL
    Questo non va bene.

    Subito dopo la CreateEvent, scrivi

    int le = GetLastError();

    eseguila in debug e controlla il valore della variabile le
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #18
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da oregon
    Questo non va bene.

    Subito dopo la CreateEvent, scrivi

    int le = GetLastError();

    eseguila in debug e controlla il valore della variabile le

    ora sembra funzionare, molto probabilmente il compilatore inizia a dare i numeri.

    Non mi spiego chi setta a NULL l'handle dopo il suo uso da parte della WaitForSingleObject(). Ero convinto che la WaitForSingleObject() attendesse sino a quando l'handle preso in considerazione fosse diverso da NULL

  9. #19
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ti devi assicurare che la CreateEvent sia eseguita *prima* della WaitForSingleObject e della SetEvent.

    Quindi, ripeto, deve essere eseguita prima di creare i vari thread, all'inizio del processo. E la Close alla fine del processo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #20
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    ok, ho visto anche nell'esempio che avevo "linkato"

    CreateEvent
    CreateThread vari
    WaiteFor...()

    ora ho notato che i thread produttore e consumatore corrono di più rispetto al thread scrittore: forse i famosi millisecondi dovuti alla scrittura su disco?
    No, anche eliminando tali scrittura il thread scrittore dorme

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.