title: Serial port programming with multi-thread in C
body: <p>I am writing a gtk application (in C++) to communicate with motor controller through serial port. I am working with Linux Ubuntu and termios lib.
  I need advice on the best solution to do it.
  So here are the constraints I have:
  1- when i send a request, the controler send me back a message
  2- the controler can send me error notification at any time if an error occurs
  3- request is ANSII characters string finished with [CR]
  4- controller answer is ANSII characters string finished with  [CR][NL] </p>
  
  <p>Because of (3) and (4), I thought it was appropriate to configure serial port in CANONICAL mode.
  Because of the GUI + (2), I thought about multi-threading: a main thread who write user request on serial port and an other infinite thread to read controller answer. Do you think it is a good idea?</p>
  
  <p>Second question: if I am using multi-threading I want to be able to write data when I need it so I have to find a way to stop/sleep the reading thread during writing maybe with pthread_cond_wait. Am I right? I've seen poll and select functions but I don't really understand them and I am not sure they are compatible with canonical mode. </p>
  
  <p>I am getting started with multi-threading and serial port. I read lots of things on google, forum...but the large amount of information is a little overwhelming for a beginner.</p>
  
  <p>Thank you for your help.</p>