Page 1 of 3
Multithreading
Posted: Mon May 27, 2013 6:06 pm
by Enrico Maria Giordano
Antonio,
what do you think about this sample (xHarbour):
Code: Select all
FUNCTION MAIN()
LOCAL hThr := STARTTHREAD( @MyFunc() )
INKEY( 0 )
STOPTHREAD( hThr )
INKEY( 0 )
RETURN NIL
STATIC FUNCTION MYFUNC()
WHILE .T.
THREADSLEEP( 1000 )
TONE( 440, 1 )
ENDDO
RETURN NIL
EMG
Re: Multithreading
Posted: Mon May 27, 2013 7:06 pm
by Silvio.Falconi
what I can do with it ?
Re: Multithreading
Posted: Mon May 27, 2013 7:21 pm
by Antonio Linares
Enrico,
It seems what you were looking for
Does it work fine ?
Re: Multithreading
Posted: Mon May 27, 2013 7:31 pm
by Enrico Maria Giordano
Silvio,
Silvio.Falconi wrote:what I can do with it ?
I'm experimenting a way to make wait animations smooth even with loops without SysRefresh() inside them.
EMG
Re: Multithreading
Posted: Mon May 27, 2013 7:32 pm
by Enrico Maria Giordano
Antonio,
Antonio Linares wrote:Enrico,
It seems what you were looking for
Does it work fine ?
It seems so.
EMG
Re: Multithreading
Posted: Mon May 27, 2013 7:45 pm
by Enrico Maria Giordano
I just found that MT EXEs are slower than ST ones.
Any comments?
EMG
Re: Multithreading
Posted: Mon May 27, 2013 8:06 pm
by Antonio Linares
Enrico,
How have you measured it ?
Re: Multithreading
Posted: Mon May 27, 2013 9:16 pm
by Enrico Maria Giordano
Antonio,
Antonio Linares wrote:Enrico,
How have you measured it ?
With Seconds(). What else?
EMG
Re: Multithreading
Posted: Mon May 27, 2013 10:00 pm
by Antonio Linares
Could you provide a small example of what you tested ? thanks
Re: Multithreading
Posted: Tue May 28, 2013 6:42 am
by Enrico Maria Giordano
Antonio,
Antonio Linares wrote:Could you provide a small example of what you tested ? thanks
Something like this:
Code: Select all
FUNCTION MAIN()
LOCAL nSec
LOCAL cVal
USE MYTABLE
nSec = SECONDS()
WHILE !EOF()
cVal = FIELD -> myfield
SKIP
ENDDO
? "Assign and skip", SECONDS() - nSec
CLOSE
INKEY( 0 )
RETURN NIL
Here I get ST: 31 MT: 41!
EMG
Re: Multithreading
Posted: Tue May 28, 2013 7:10 am
by StefanHaupt
Enrico,
just to understand, what could be the advantages using MT instead of ST ? What functions could be put in threads ?
Im my understanding a database application is a single thread application with single tasks, e.g. browsing a dbf or searching in a dbf. What can be done, to get simultaneous tasks ?
Stefan
Re: Multithreading
Posted: Tue May 28, 2013 7:58 am
by Enrico Maria Giordano
Stefan,
StefanHaupt wrote:Enrico,
just to understand, what could be the advantages using MT instead of ST ? What functions could be put in threads ?
Im my understanding a database application is a single thread application with single tasks, e.g. browsing a dbf or searching in a dbf. What can be done, to get simultaneous tasks ?
Stefan
Don't know. I just need something to get smooth wait animations during loops without SysRefresh() in them.
EMG
Re: Multithreading
Posted: Tue May 28, 2013 8:05 am
by Antonio Linares
Enrico,
Thanks for your example, what source code had you running on the second thread ?
Re: Multithreading
Posted: Tue May 28, 2013 8:08 am
by Enrico Maria Giordano
Antonio,
Antonio Linares wrote:Enrico,
Thanks for your example, what source code had you running on the second thread ?
Nothing. I created no threads. Just link vmmt.lib and cw32mt.lib in.
EMG
Re: Multithreading
Posted: Tue May 28, 2013 10:18 am
by Antonio Linares
Enrico,
How many records you have on the DBF ?