|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
[C/C++] uso dei thread
ho implementato un programma con due thread il cui scopo è leggere dati da schede, verificare se tali dati sono cambiati e se lo sono, visualizzare i risultati.
Ero molto indeciso se scrivere tutto il programma in sequenza oppure adottare la strada dei thread per introdurre un certo parallelismo ed ho pensato: se il numero di schede da analizzare si limita ad una allora l'uso dei thread forse non è giustificabile ma se il numero di schede è maggiore di una allora l'uso dei thread trova la sua giustificazione. Per fare un esempio avrei che, in quanto io accedo alle varie schede attraverso indirizzo ip: //caso senza thread schede[]={192.168.80.10, 192.168.80.11, 192.168.80.20}; byte buffer[512]; num_schede=3; for (int i =0; i< num_schede; i++ ){ buffer = leggischeda(schede[i]); for( int u = 0; u < 512; u++){ if(buffer[u] == ...... ) se è cambiato qualcosa allora visualizza e salva } in questo scenario le altre schede attendono il termine dell'esecuzione della scheda che la precede } //caso con thread schede[]={192.168.80.10, 192.168.80.11, 192.168.80.20}; byte buffer[512]; //thread lettore scheda threadLettore(char *ip) { buffer = leggischeda(ip); for( int u = 0; u < 512; u++){ if(buffer[u] == ...... ) se è cambiato qualcosa allora visualizza e salva } //thread visualizza e salva prinft(); fprintf(); in questo secondo scenario nessuna scheda attende l'altra e tutto si muove in parallelo. Vi pare un pensata valida? grazie |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
Quote:
![]() Contando inoltre che l'operazione da svolgere non è neanche esigente dal punto di vista computazionale...
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
Quote:
ho messo 3 solo a titolo di esempio ma nella realtà sono minimo 10 e tutte con 1024 byte da verificare bit a bit |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:16.