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
p.s.
3 schede sono solo un esempio in quanto potrebbero essere maggiori di 10