Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    16

    [C] Mantenere una lista in memoria condivisa

    Sistema Operativo: Mac OS X 1.4

    Ciao, mi trovo nuovamente ad aver bisogno di voi...

    panoramica del problema
    Ho un tracker (P1), che mette in una lista nodi contenenti i dati dei computer che lo contattano (ip, porta...) in modo da poterli contattare in un futuro.
    Per evitare di tener traccia di nodi che per vari motivi non interessano piu' a P1, i client ancora interessati mandano ad intervalli regolari un segnale ad un figlio di P1 (chiamiamolo P2).
    P2 dovrebbe essere in grado di scorrere la lista creata e modificabile da P1, per resettare un contatore scritto nel nodo della lista.
    Esiste ancora un P3 (sempre figlio di P1) che dovrebbe scorrere la lista decrementando il contatore e cancellando i nodi che hanno contatore minore di 0.

    la domanda è banale, ma purtroppo dalle guide che ho letto non risulta chiaramente la risposta...
    E' possibile mantenere in memoria condivisa un'intera lista di struct in continua modificazione (aggiungo, modifico e tolgo nodi) in modo da poter spartire a piu' processi, figli del creatore della shared memory) l'onere delle operazioni?
    Visto che e' codice per la mia tesi volevo anche chiedere a chi è nel settore se questa meccanica (lista salvata su memoria condivisa) è una pratica utilizzata comunemente, oppure è una di quelle cose "si puo' fare, ma e' meglio evitare".
    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    16
    up

  3. #3
    Ti riferisci a mmap?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    16
    gh...
    ne sento parlare da te per la prima volta, mi sto documentando sulla funzione...
    La questione fondamentale pero' sarebbe la possibilità di tenere una struttura dinamica come una lista, in memoria condivisa...
    se mmap lo permette sono a cavallo!

    Grazie della risposta!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    16
    Caspita... non riesco a venirne a capo!
    provo a cambiare la domanda:

    Come posso fare per permettere a 2 processi di lavorare su una stessa lista dinamica?
    E' possibile?


    Scusate se insisto ma sono bloccato sullo stesso punto da ormai 5 giorni!

  6. #6
    A dire il vero ci sono un sacco di modi per condividere "memoria" tra più processi (vedi anche "shm_open"). Potresti anche basarti su file (con opportune tecniche di locking) od appoggiarti ad un database (soluzione di alto livello preferibile alle altre troppo a basso livello).

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    16
    Ottima idea! Al DB nn avevo ancora pensato...
    effettivamente risolverei in blocco il problema dell'accesso da piu' processi e della sincronizzazione, senza contare il guadagno nelle prestazioni!
    Grazie ancora

  8. #8
    Originariamente inviato da Valx2
    senza contare il guadagno nelle prestazioni!
    Non è detto: dipende da quello che ci fai.

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