Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    9

    [C] thread e condivisione di una lista

    Ciao a tutti!
    Ho un problema con thread e liste collegate in un solo verso (puntatore al successivo), ve lo riassumo brevemente:

    Vi sono 2 thread, A e B che in sintesi devono fare questo lavoro: A legge da una lista X, prende il valore di ogni elemento, fà delle operazioni su quel valore e man mano che scansiona la lista X ne crea un'altra Y che il thread B in contemporanea deve leggere. B intanto, su ogni elemento passatogli da A deve fare un lavoro simile: prende il valore di ogni elemento di Y e creare una nuova lista Z che A deve leggere.

    Al momento la situazione è questa: A legge la lista X, ne crea un'altra Y e la passa a B e quest'ultimo crea l'utima lista Z da passare ad A in modo corretto. Il ciclo avviene elemento per elemento in contemporanea. (vedere foto in allegato).

    IL PROBLEMA: quando torna un elemento dalla lista Z, A deve poter scegliere se il successivo elemento da elaborare è quello della lista Z o quello della lista X, ma il thread A ha già terminato il suo lavoro e si è chiuso!!! come posso rallentarlo? o bloccarlo e mandarlo a scatti.. HELP!
    Immagini allegate Immagini allegate

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    65
    provo a risponderti con un paio di idee...
    prima: il thread credo tu possa rallentarlo con la funzione sleep(tempo) come per i processi... ma non credo sia buona perchè non sai quanto tempo assegnargli
    seconda: mettere il thread in attesa wait(&status)
    terza: aggiungi un flag all'elemento che lo setti con il valore del processo che lo ha cambiato e successivamente fai il controllo su questo parametro

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    9
    La prima soluzione l'ho già provata, ma considerando che devo già fare usleep(200) al thread B affinchè dia il tempo ad A di passargli almeno un elemento, alla fine non va..

    Per la seconda soluzione invece, intendi dire che bisogna porre usare una condizione pthread_cond_wait e fermarlo fino a che, esempio un flag non viene attivato?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    65
    si intendevo una cosa del genere

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    9
    adesso provo con pthread_cond_wait... intanto grazie

    altre idee?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.