PDA

View Full Version : Un problema non banale


Zebra75
18-03-2008, 19:09
per far capire il mio problema vado con un esempio:
si hanno da controllare continuamente 10 PC connessi ad una LAN e si vuole scrivere un programma sufficientemente performante.

Io ho scritto una cosa del tipo:

while(1)
{

ciclo
for(i =ip_primo_pc; i< ip_ultimo_pc)
e fa delle cose sui dieci PC;

}

il problema è che quando è in esecuzione non è possibile fare altro, nemmeno ad esempio, spostare la form sul desktop.
Ci sono programmi analoghi e che effettuano dei controlli, ma coi quali è sempre possibile interagire in tempo quasi reale: qual'è il loro segreto ?

grazie 1000

gugoXX
18-03-2008, 19:21
DEvi scrivere un programma MultiThreading.
In particolare ti servira' per liberare il thread principale, quello della finestra, per permettergli veramente di essere libero di fare solo la finestra...

Zebra75
18-03-2008, 19:25
DEvi scrivere un programma MultiThreading.
In particolare ti servira' per liberare il thread principale, quello della finestra, per permettergli veramente di essere libero di fare solo la finestra...

devo implementare quindi una DLL ?

gugoXX
18-03-2008, 19:27
Devi usare in linguaggio di programmazione che permetta di usare il multithreading.
Molti ce l'hanno gia' nativamente, altrimenti dovrai dotarti di librerie per il multithreading.

marko.fatto
18-03-2008, 19:27
devo implementare quindi una DLL ?

devi rendere il programma multi-thread cioè "diviso" in più processi.. ad esempio un thread gestirà la finestra del programma e un altro resterà in ascolto..

Zebra75
18-03-2008, 19:28
Devi usare in linguaggio di programmazione che permetta di usare il multithreading.
Molti ce l'hanno gia' nativamente, altrimenti dovrai dotarti di librerie per il multithreading.


io uso il borland builder c++ che dovrebbe essere quello giusto, o no ?

marko.fatto
18-03-2008, 19:30
io uso il borland builder c++ che dovrebbe essere quello giusto, o no ?

ehm.. quello è il compilatore..
in C++ puoi ad esempio usare le api win32 per creare thread se ti trovi su windows..

Zebra75
18-03-2008, 19:47
ehm.. quello è il compilatore..
in C++ puoi ad esempio usare le api win32 per creare thread se ti trovi su windows..

ops!
intendevi allora con CreateProcess() e simili ?

dupa
18-03-2008, 19:51
per far capire il mio problema vado con un esempio:
si hanno da controllare continuamente 10 PC connessi ad una LAN e si vuole scrivere un programma sufficientemente performante.

Io ho scritto una cosa del tipo:

while(1)
{

ciclo
for(i =ip_primo_pc; i< ip_ultimo_pc)
e fa delle cose sui dieci PC;

}

il problema è che quando è in esecuzione non è possibile fare altro, nemmeno ad esempio, spostare la form sul desktop.
Ci sono programmi analoghi e che effettuano dei controlli, ma coi quali è sempre possibile interagire in tempo quasi reale: qual'è il loro segreto ?

grazie 1000

Ti consiglio di usare Java o .NET
ciao!

marko.fatto
18-03-2008, 20:04
ops!
intendevi allora con CreateProcess() e simili ?

si.. più o meno..

Ti consiglio di usare Java o .NET

quoto..
se ti è possibile è meglio..

^TiGeRShArK^
18-03-2008, 20:17
ops!
intendevi allora con CreateProcess() e simili ?
beh..
non so cosa sia createProcess, ma dal nome direi proprio di no.
Un thread è diverso da un processo.
Anche se puoi creare + processi, di solito si crea un processo unico e in questo vengono fatti girare + thread.
In java e in .net ad esempio non appena si crea un' applicazione con interfaccia grafica si hanno già a disposizione automaticamente due thread: l'Event Dispatcher Thread, in cui girano tutti i componenti grafici, e il thread del main.
Cmq anch'io ti consiglio di usare java o .net.. :fagiano:

cionci
18-03-2008, 23:53
Thread chiuso
|
V

Zebra75
19-03-2008, 09:11
ad ogni modo ho risolto in C++ con CreateThread() e TerminateThread()