Create and start a new thread. This function does not block waiting for the
thread to run initialization. |display_name| is the name that will be used
to identify the thread. |priority| is the thread execution priority.
|message_loop_type| indicates the set of asynchronous events that the thread
can process. If |stoppable| is true (1) the thread will stopped and joined
on destruction or when stop() is called; otherwise, the thread cannot be
stopped and will be leaked on shutdown. On Windows the |com_init_mode| value
specifies how COM will be initialized for the thread. If |com_init_mode| is
set to COM_INIT_MODE_STA then |message_loop_type| must be set to ML_TYPE_UI.
Create and start a new thread. This function does not block waiting for the thread to run initialization. |display_name| is the name that will be used to identify the thread. |priority| is the thread execution priority. |message_loop_type| indicates the set of asynchronous events that the thread can process. If |stoppable| is true (1) the thread will stopped and joined on destruction or when stop() is called; otherwise, the thread cannot be stopped and will be leaked on shutdown. On Windows the |com_init_mode| value specifies how COM will be initialized for the thread. If |com_init_mode| is set to COM_INIT_MODE_STA then |message_loop_type| must be set to ML_TYPE_UI.