On Wed, Jun 3, 2009 at 8:35 AM, Ovanes Markarian
On Wed, Jun 3, 2009 at 3:21 PM, Daniele Barzotti < daniele.barzotti@eurocomtel.com> wrote:
void io_worker_thread(void) { #if (WIN32) CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); #endif
io_service.run();
#if (WIN32) CoUninitialize(); #endif };
It is better to use at least RAII here. This approach is not exception safe and if io_service.run() throws an exception CoUnintialize() will not be called.
For per-thread COM Initialization in the presence of boost I almost always
do the following:
//Put in a widely visible header file somewhere
struct com_init;
extern boost::thread_specific_ptr