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 <dib...@wp.pl>
 
Date: Thu, May 12, 2011 3:59 pm
 To: Ararat Synapse <synalist-public@lists.sourceforge.net>
 
 

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
 synalist-public@lists.sourceforge.net
 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
 synalist-public@lists.sourceforge.net
 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
synalist-public@lists.sourceforge.net
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
synalist-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/synalist-public

Reply via email to