Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577

    [C/C++] Thread

    ciao,
    mi stavo chiedendo se costruendo due thread, uno produttore ed uno consumatore se ci potrebbero essere conflitti se il consumatore accede ad una array condiviso in lettura mentre il thread produttore lo sta scrivendo.

  2. #2
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Certo ke ci potrebbero essere conflitti: il problema del produttore-consumatore è proprio quello!
    A essere precisi ci sono 2 tipi di conflitti:

    competizione- avviene tra produttori/produttori e consumatori/consumatori, quando vogliono accedere alla stessa cella dell'array per prendere/inserire.

    cooperazione- avviene tra produttori/consumatori: il consumatore deve essere sicuro ke il dato preso sia aggiornato e non sia lo stesso già preso in precedenza.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da Dark867
    Certo ke ci potrebbero essere conflitti: il problema del produttore-consumatore è proprio quello!
    A essere precisi ci sono 2 tipi di conflitti:

    competizione- avviene tra produttori/produttori e consumatori/consumatori, quando vogliono accedere alla stessa cella dell'array per prendere/inserire.

    cooperazione- avviene tra produttori/consumatori: il consumatore deve essere sicuro ke il dato preso sia aggiornato e non sia lo stesso già preso in precedenza.
    ciao,
    il problema dell'aggiornamento potrebbe essere il minore di mali, mi chiedevo se si potrebbero creare dei blocchi al sistema in quanto due thread accedono allo stesso indirizzo di memoria.

    Ciò potrebbe non essere vero per sistemi monoprocessore, ma potrebbe accadere in sistemi dual core o altro.

  4. #4
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Guarda è un argomento molto avanzato...certo che si può fare, anzi si DEVE fare e tutto questo ricade nella branca della programmazione concorrente!
    Se stai lavorando su linux devi fare affidamento alle funzioni della libreria posix (qui trovi qualcosa http://www.yolinux.com/TUTORIALS/Lin...ixThreads.html), su windows ci sono funzioni simili, però prima di buttarti sul codice sarebbe meglio studiassi un po' di teoria perché da quello ke scrivi si capisce ke stai a zero...se hai più tempo ti consiglio questo http://www.lilik.it/~mirko/gapil/ , che oltre a mostrarti codice ti spiega abbastanza bene come stanno le cose.

    Giusto x la cronaca la concorrenza c'è sempre sia mono ke multi processore: solo kenel monoprocessore il processore la simula, nel multiprocessore hai prp a ke fare cn + entità ke lavorano assieme.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    i thread li ho studiati solo a livello teorico ma è la prima volta che li implemento per una applicazione seria.

    Quindi, scusa se mi ripeto: se ho un thread che scrive un byte di memoria e nello stesso tempo un altro thread lo legge potrebbero generarsi crash di sistema?

  6. #6
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Crash di sistema non penso, dopotutto stai solo scrivendo in una locazione di memoria locale al tuo programma.
    Xò la tua applicazione può crashare eccome o, in generale, non funzionare xkè quella zona di memoria sarà inconsistente.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma alla fine con quale sistema operativo lavori?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    quindi scusa due thread che condividono per definizione la memoria possono accedere uno il scrittura ed uno in lettura senza causare crasch al processo stesso giusto?

    Uni problema casomai resta che i due thread potrebbero leggere situazioni non allineate, giusto?

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da oregon
    Ma alla fine con quale sistema operativo lavori?

    ciao,
    sotto sviluppando sotto windows

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da misterx
    ciao,
    sotto sviluppando sotto windows
    Ok ... allora studia le API che fanno capo a questo argomento

    http://msdn.microsoft.com/en-us/library/ms684122(v=VS.85).aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.