On 8/25/2010 11:36 AM, Joel Koltner wrote:
I have a multi-threaded application where several of the threads need to write to a serial port that's being handled by pySerial. If pySerial thread-safe in the sense that pySerial.write behaves atomically? I.e., if thread 1 executes, serport.write("Hello, world!") and thread 2 executes serport.write("All your bases are belong to us!"), is it guaranteed that the output over the serial port won't "mix" the two together (e.g., "Hello All your bases are belong to us!, world!") ?
You're not guaranteed that one Python "write" maps to one OS-level "write". Individual "print" statements in Python are not atomic. You don't need a queue, though; just use your own "write" function with a lock. import threading lok = threading.Lock() def atomicwrite(fd, data) : with lok : fd.write(data) John Nagle -- http://mail.python.org/mailman/listinfo/python-list