I don't have much to add: really Enjoyed your response.
Thank you for the Validation of the Windows TThread weirdness - nice to
know I wasn't the only one noticing some different behaviour tThread in
Windows versus Linux.
Jason
-----------------
Generally speaking, I've been impressed at how often platform
differences simply are "flawless" in that they seem to usually work
pretty much identical across OS
the ones "i Understood well" and kept adding more to my repetoire - now
I pretty much love the FPC threading model. I'm not a thread hound
either as my hint at multiplexors may suggest but it's pretty slick,
and
gets the job done "Git-r-dun" (B^)>
Well, it's basic, but it works. (I don't like having to add the thread
manager units only on Unix, but...)
You can work them a few different ways and I'm not a threading king but
...
can do this more atomically with call right in thread to pause, or
whatever.
There is a demo that comes with FPC that has two simple processes
writing 1 and 2 to the screen. Believe it or not - I used that simple
demo as the start of my FPC threads education/experimentation.
As did I, but they need a more complicated demo, because most times, the
threads process something for the main program, which means that
requests might build up for the threads, so there needs to be some kind
of queue used (and access to that needs to be safe). There are various
ways to do this, but there should be a demo of at least one so that
people new to this can figure it out. Otherwise, people will hit on the
naive solution of using global variables with a mutex, and discover
strange results when things end up in the wrong place after multiple
requests.
(To make this Synapse relevant, say you make an HTTPDownload thread to
handle downloads in the background. But since it's not running in the
background, the user could initiate another download. Then the results
come in, they have to be matched with the requests - or maybe the
previous request should be canceled when the new one is made?)
I DO need
to point out that in Linux, my interthread messaging system (like your
IPC) works awesome but in windows I had to pick a different algorythm
(less "slick" - and it worked - no exact reason other than I thnk in
windows I get deadlocks maybe and not in Linux or Mac.) Instead of even
I have heard of using the message queue in windows to have the
application "send itself a message" for this purpose. I suppose you
could use IPC from your program to itself too ;) I just use a dynamic
array as a queue for simple stuff. (one for input one for output).
driven "Thread done, pose for next go" In windows I made a queue of
"finished" threads and worked it more like a fifo. (think web server
with 20 idle threads for example waiting for work).
It would be nice to emulate Apple's "blocks" (Grand Central Dispatch)
functionality here. It could use the real implementation on OS X and
BSD, and emulate it with normal threads on other platforms. This would
require some special compiler support to do it the best way though.
In short - I do think it's slick enough for that AND I've had some
success using the FPC "gui-less" stuff perfectly when dropping it into
Lazarus projects (which one hopes for but when I see it work - I cheer)
But of course, I normally write all my stuff in units without any
references to GUI units, and test it with command line programs, then
nothing really depends on the GUI. (Also, even within GUI code, I
usually make a data module and an AppActions inside that, so that all
the code goes there, it makes it much easier to re-arrange forms later,
etc., without having to copy-paste code.)
Where FPC is cheetah, Laz is the finicky cat: awesome when the final
exe
is compiled and purring away but I digress again.
Nonetheless, I have seen Lazarus go from unusable when I first looked
at it to pretty good recently - especially on Mac OS X. Certainly it's
better than Kylix for most uses ;)
Thank you,
Noah Silva
Jason P Sage - Jegas, LLC - 860-871-6691 - 9 West Road FL#1 -
Ellington CT, 06029
This communication, including attachments, is for the exclusive use of
addressee and may contain proprietary, confidential and/or privileged
information. If you are not the intended recipient, any use, copying,
disclosure, dissemination or distribution is strictly prohibited. If
you
are not the intended recipient, please notify the sender immediately by
return e-mail, delete this communication and destroy all copies.
-------- Original Message --------
Subject: Re: [Synalist] TIMAPSend - solutions for freezing
From: Krzysztof <[email protected]>
Date: Thu, May 12, 2011 3:59 pm
To: Ararat Synapse <[email protected]>
Do you mean that FPC threads can works in background and keep imap
client connected to server? I always thought that they do what they
have
to do and end their action. How this works? Some kind of loop in
Execute
method which keep imap connection and listen for task from main thread?
------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay_______________________________________________
synalist-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synalist-public
------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
synalist-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synalist-public
------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay_______________________________________________
synalist-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synalist-public
------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
synalist-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synalist-public