If you know memcached threading, moxi's is very much the same.
Just like with memcached, there's a main thread, which is responsible for:
main(argc,argv) initialization and command-line parsing.
daemonizing.
spawning worker and ancilliary threads.
listen()'ing on (usually) one or more ports.
accept()'ing client connections, and delegating accepted upstream connections to worker threads.
The ancillary threads include:
libconflate thread - for dynamic (re-)configuration
This thread is spawned by the libconflate library to make out-of-band REST or XMPP calls for configuration instructions.
stdin_term_handler - watches to see when stdin closes, for windows platform support.
hashtable reallocation thread - inherited from memcached.
Tere are also worker threads, which are assigned ownership of accepted upstream connections my the main thread.