Thread-safe Boost.Signals

Dear Boost, Doug hinted in the signals FAQ that it is possible to make a thread-safe version of the library. While such a beast may not be in the works, I was wondering if I could write my own layer to serialize calls to the signals library. Typically, we wrap signals using a class as simple as: class NKNEF_ENTRY CImageLoadedEvt : public CImageEvt { typedef boost::signal<void(const ImageLoadData&)> sigNotify_ImageLoaded; public: NKNEF_CALL CImageLoadedEvt(); virtual NKNEF_CALL ~CImageLoadedEvt(); void NKNEF_CALL Connect(const sigNotify_ImageLoaded::slot_type& slot); void NKNEF_CALL Notify(ImageLoadData& data); private: sigNotify_ImageLoaded signal; }; void NKNEF_CALL CImageLoadedEvt::Connect(const CImageLoadedEvt::sigNotify_ImageLoaded::slot_type& slot) { signal.connect(slot); } void NKNEF_CALL CImageLoadedEvt::Notify(ImageLoadData& data) { signal(data); } Can a wrapper be designed to achieve thread-safe use of the signals library? For instance, a critical section could guard concurrent operation of the Connect and Notify methods as well as the destructor... Thanks in advance for your advice, - Ashok Thirumurthi
participants (2)
-
Ariel Badichi
-
Ashok Thirumurthi