[Lazarus] Lazarus implementation of TListView etc?

Mark Morgan Lloyd markMLl.lazarus at telemetry.co.uk
Sat Oct 31 11:22:08 CET 2015


Bo Berglund wrote:

> My most recent investigation is about how to create a TCPIP socket
> object that has event driven receive functions. I have no use for the
> problem unit in that quest so this thread is not really valid for
> those problems. Last I tested Indy10 with the help of Remy Lebeau but
> in the end I got caught by my inability to use a blocking socket with
> threads and fire off events into the main code running as the command
> line program.

What does the main thread do? If you can contrive to write that as a 
loop, then as you've already been told you can call CheckSynchronize() 
which hands control to whatever's been queued by threads using 
Synchronize().

Depending on exactly what the program does, you might need to do 
something like fudging keyboard access using fpSelect(), but basically 
it works... I've got a mainframe emulator here which responds to 
keyboard commands and also interleaves output from the various backend 
processes, I've used Lazarus as the IDE but it's entirely a console app.

> I cannot use Synchronize because then the events fire off only when
> the main program code ends and if I don't use Synchronize then I get a
> SIGSEG exception somewhere.

Assume that none of the LCL is thread-safe, i.e. background threads have 
no safe UI access. Assume that the RTL and FCL are not specifically 
thread safe except where documented, but that you can use it in 
conjunction with conventional "cautious" programming techniques.

-- 
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