This library includes both C version and C++ version. Both versions works the same way. There are two ways how to use it:
a) Open function just opens port and then it is up to you to call ReadBuffer or WriteBuffer periodically. No thread is created.
b) OpenAsync function wants callback function as an additional parameter. Internally it creates a thread. This thread peridically calls ReadBuffer function and callback function is called when data arrive (so you don't need to call ReadBuffer explicitelly).
Library also includes some critical sections to avoid closing port while data are still being sent (especially when more threads are used).