On 2020-07-10 01:05, Travis Siegel wrote:
On 7/9/2020 5:11 PM, Tomas Hajny wrote:
On 2020-07-09 22:58, Michael Van Canneyt wrote:
On Thu, 9 Jul 2020, Bo Berglund via fpc-pascal wrote:

On Thu, 9 Jul 2020 19:36:31 +0200 (CEST), Michael Van Canneyt
<mich...@freepascal.org> wrote:

Is this done in a thread ? Since you're using indy, I suppose so.

The crt unit is not thread safe. The implementation on Windows and Linux is
totally different, which may explain the difference you see.

Is there a way to check user keyboard input in the main program while
action is being done in the server's threads?

Sure, do a fpselect() on file descriptor 0.

You can use the unit Keyboard as well, which is cross-platform.

cross platform doesn't mean thread safe, which is the primary reason
for *not* using crt unit.  I have no idea if keyboard is thread safe
or not, and I've not seen anything in this discussion to answer that
question either.

The point is that unit Keyboard makes no changes to the console output (unlike unit Crt). Unit Crt provides special features allowing to perform output at a particular position of the console (which makes it less reliable in multi-threaded scenarios). Without this unit, standard simple I/O is used. No, it isn't guaranteed to be thread-safe per se, you should make sure to wait for finishing output from the first thread before you start writing in another, that's your responsibility, but there are ways for achieving that (as mentioned earlier in this thread).


Is there sample code of server code so testing can be performed
outside the discussion parameters? I have looked for years for
client/server information for freepascal, and never found anything,
then this discussion shows some code for running a server, where did
that information come from? I'm apparently really bad on searching for
said information.

I'm not sure how we got from a multi-threaded application to client/server, but there are certainly examples of using FPC for both client and server in our SVN (see e.g. packages/fcl-net/examples/ and packages/fcl-web/examples/).

Toams
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to