Hoi,
Ik moet een apparaat programeren met 8 seriele poorten. Aan deze poorten zitten displays met adressen van 0x0001 tm 0xFFF0 oftewel er zijn 65520 mogelijk adressen op iedere poort.
Ik moet helaas serieel zoeken, dit zorgt ervoor dat het 20 minuten duurt om 1 poort uit te lezen. Nu beweerde de hoofd sotfware engineering hier, dat als ik dit dmv threads zou doen, ( dus 8 threads ( 1 tje per poort)) dat het sneller zou zijn dan 8 keer een aanroep van een functie die dit doet.
Maar volgens mij is dit onzin. Het is namelijk zo of je nu 8 processen ombeurt een timeslice geeft.
voorbeel de functie die de thread runt duurt 20 minuten dus --> 8 x 20 min = 160 min
of je doet het met threads, iedere thread krijgt een timeslice van 20ms iedere thread heeft dan (20*60*1000)/20=60000 slices nodig om de functie te voltooien
nou dit dan 8 keer 8*60000=480000 slices van 20 ms
480000*20=9600000 ms in totaal -->9600000/1000/60 = 160 min
het is toch alleen handig als je iets hebt wat om de 5 seconden moet pollen ofzo terwijl de andere processen ook door lopen of heb ik het nu mis ( of als je systeem ff moet idle in een proces, dat dan een ander proces tijd krijgt) maar voor mijn toepassing is het toch helemaal niet handig? of vergis ik me nu
Ik moet een apparaat programeren met 8 seriele poorten. Aan deze poorten zitten displays met adressen van 0x0001 tm 0xFFF0 oftewel er zijn 65520 mogelijk adressen op iedere poort.
Ik moet helaas serieel zoeken, dit zorgt ervoor dat het 20 minuten duurt om 1 poort uit te lezen. Nu beweerde de hoofd sotfware engineering hier, dat als ik dit dmv threads zou doen, ( dus 8 threads ( 1 tje per poort)) dat het sneller zou zijn dan 8 keer een aanroep van een functie die dit doet.
Maar volgens mij is dit onzin. Het is namelijk zo of je nu 8 processen ombeurt een timeslice geeft.
voorbeel de functie die de thread runt duurt 20 minuten dus --> 8 x 20 min = 160 min
of je doet het met threads, iedere thread krijgt een timeslice van 20ms iedere thread heeft dan (20*60*1000)/20=60000 slices nodig om de functie te voltooien
nou dit dan 8 keer 8*60000=480000 slices van 20 ms
480000*20=9600000 ms in totaal -->9600000/1000/60 = 160 min
het is toch alleen handig als je iets hebt wat om de 5 seconden moet pollen ofzo terwijl de andere processen ook door lopen of heb ik het nu mis ( of als je systeem ff moet idle in een proces, dat dan een ander proces tijd krijgt) maar voor mijn toepassing is het toch helemaal niet handig? of vergis ik me nu