I am using a pi3 which talks to an arduino via serial0 (ttyAMA0)
It all works fine.  I can talk to it with minicom, bidirectionally.  However, a python based server also wants this port.  I notice when minicom is running, the python code can write to serial0 but not read from it.  At least minicom reports the python server has sent a message.
Can someone let me know how this serial port handles contention, if at all?  I notice running two minicom session to the same serial port wrecks both sessions.  Is it possible to have multiple writers and readers if they are coordinated not to act at the same time?  Or can there be multiple readers (several terms running cat /dev/serial0)
I have googled around for answers but most hits are about using multiple serial ports or getting a serial port to work at all.
Cheers
Since two minicoms can attempt to use the port and there are collisions minicom must not set an advisory lock on local writes to the serial port.  I guess that the first app to read received remote serial message clears it, since serial doesn't buffer.  When a local app writes to serial, minicom displays this and it gets sent.  I'm going to make this assumed summary

when a local process puts a message on the serial port everyone can
see it and it gets sent to remote. 
when a remote message arrives on
serial, the first local process to get it, gets it.  The others
can't see it. 
for some reason, minicom has privilege over arriving
messages.  This is why two minicoms break the message.
basic serial port contention