diff options
| author | Christian Glöckner <cgloeckner@freenet.de> | 2016-03-31 10:21:18 +0200 | 
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2016-03-31 21:15:44 +0200 | 
| commit | dd49e09e4a96635638ad674a337f8f95928ae277 (patch) | |
| tree | d10e4bfd0774df91a3c6332dbebfad521354afe4 /src | |
| parent | b3ed57f43d0fc18de5ac2610eabc5a97d9eea4a8 (diff) | |
Added explicit cpy/mv assign operators to be sure about thread-safety of Group<T>
Diffstat (limited to 'src')
| -rw-r--r-- | src/syncedsettings.h | 24 | 
1 files changed, 22 insertions, 2 deletions
| diff --git a/src/syncedsettings.h b/src/syncedsettings.h index e60eb78..4991627 100644 --- a/src/syncedsettings.h +++ b/src/syncedsettings.h @@ -76,7 +76,6 @@ public:  		: mutex{}  		, data{}  	{ -		std::lock_guard<std::mutex> lock{mutex};  		std::lock_guard<std::mutex> lock{other.mutex};  		data = other.data;  	} @@ -85,11 +84,32 @@ public:  		: mutex{}  		, data{}  	{ -		std::lock_guard<std::mutex> lock{mutex};  		std::lock_guard<std::mutex> lock{other.mutex};  		std::swap(data, other.data);  	} +	Group<T>& operator=(const Group<T>& other) +	{ +		if (*this != &other) +		{ +			std::lock_guard<std::mutex> lock{mutex}; +			std::lock_guard<std::mutex> lock{other.mutex}; +			data = other.data; +		} +		return *this; +	} +	 +	Group<T>& operator=(Group<T>&& other) +	{ +		if (*this != &other) +		{ +			std::lock_guard<std::mutex> lock{mutex}; +			std::lock_guard<std::mutex> lock{other.mutex}; +			std::swap(data, tmp.data); +		} +		return *this; +	} +  	operator T() const  	{  		std::lock_guard<std::mutex> lock{mutex}; | 
