[Lazarus] Lazarus implementation of TListView etc?
Mark Morgan Lloyd
markMLl.lazarus at telemetry.co.uk
Sat Oct 31 19:28:44 CET 2015
Bo Berglund wrote:
> thank you very much for your excellent descriptions and tips!
>
> I did not know of CheckSynchronize before but I immediately threw in a
> number of such calls in the existing code that throws the SIGSEGV
> exception and Lo-and-behold! I am now getting the event output I was
> expecting and no SIGSEGV exception! :)
I'm pretty sure it was mentioned a couple of days ago, since I had to
ask what it was called (despite using it myself).
> The sending part is a bit of a mystery to me as well because the
> socket is owned by the reading thread and I don't currently know the
> best way to actually tell it to transmit some data.
> I got stuck by the non-appearance of the event execution before...
Threads don't own things, things are owned by processes. I'm not
entirely sure about this, but I think that you could probably have one
thread reading and another writing.
HOWEVER...
> Finally
> My communications object does not use Synchronize() for the events.
> Should I add this back now that CheckSynchronize seems to have cured a
> few "shortcomings"?
A lot will depend on whether you decide to use an off-the-shelf library
or component suite, which would probably be appropriate if you're
implementing a standard protocol. My understanding is that
CheckSynchronize() does a significant amount of what the LCL main loop
would do, which accounts for much of the difference between program
types. Alternatively look at the lnet code that comes with FPC, I'm
using the Telnet client from that to talk to things like simulated IBM
mainframes.
As a general point, if you're implementing a protocol from scratch you
might find it appropriate to use UDP rather than TCP. Since UDP is
unreliable you'd obviously need to implement your own sequence numbers
etc. to detect missed messages, but it has the advantage that messages
won't need reassembly if they get fragmented due to e.g. a router having
a smaller-than-expected MTU.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the Lazarus
mailing list