X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fbase.cpp;h=da2b5a98cb1c8db3f211b292137783b0c19d4e7d;hp=052d464becb6f793cb774c32e38c4fa40e686721;hb=169ece8b190040c4b61d68122c4ead1ba266cf79;hpb=0793fb99ee8c55c7ffe96bca902632f328e10edb diff --git a/source/io/base.cpp b/source/io/base.cpp index 052d464..da2b5a9 100644 --- a/source/io/base.cpp +++ b/source/io/base.cpp @@ -8,12 +8,14 @@ namespace IO { Base::Base(): mode(M_READ), - eof_flag(false) + eof_flag(false), + mutex(0) { } Base::~Base() { signal_deleted.emit(); + delete mutex; } void Base::check_access(Mode m) const @@ -62,5 +64,19 @@ const Handle &Base::get_handle(Mode) throw logic_error("Base::get_handle"); } + +Base::Synchronize::Synchronize(Base &i): + io(i) +{ + if(!io.mutex) + io.mutex = new Mutex; + io.mutex->lock(); +} + +Base::Synchronize::~Synchronize() +{ + io.mutex->unlock(); +} + } // namespace IO } // namespace Msp