Is CAsyncSocket thread-safe when used with one thread for reading and one for writing?
No, CAsyncSocket is not thread-safe when used with one thread for reading and one for writing.
CAsyncSocket::Create is not thread-safe. If you are calling it in a multi-threaded environment where it could be invoked simultaneously by different threads, be sure to protect each call with a mutex or other synchronization lock. I suggest you need to use CCriticalSection or CMutex.
Of course, I would recommend you use CSocket instead of CAsyncSocket. A CSocket object also provides blocking, the blocking read simplifies the read thread's logic.