
Igor R wrote:
I think the best way to do this is to remove the "work" object when you want the io_service's thread(s) to end. So, if you wish this to happen on last MyObj destruction, I guess the most intuitive approach would be to create "work" on the heap and give each MyObj a shared_ptr to it - then everything would happen automatically. The only concern here is the fact that "work" is destroyed (and thus detached from the io_service) in a thread other than io_service's one. But since io_service is stated to be thread-safe, I guess it should be safe.
Thanks a lot Igor. Only one thing.. Is there a way to retrieve a work object from the io_service? Now I done it like: EXTERN_C EUROATLIB_API MyObjHandl CALL GetMyObj() { ... p_work = new boost::asio::io_service::work(io_service); // create the new object MyObj pMyObj = new MyObj(io_service); pMyObj->io_work_ptr = p_work; return pMyObj; } But I would like to hide the assignment doing it automatically inside my MyObj which take an io_service ref in the constructor. Thanks! Daniele.