2 * Amiga Generic Set - set of libraries and includes to ease sw development for all Amiga platforms
3 * Copyright (C) 2001-2011 Tomasz Wiszkowski Tomasz.Wiszkowski at gmail.com.
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
43 virtual T
&AttemptRead(bool *bResult
)
45 if ((pSync
.AttemptRead()) && (0 != bResult
))
47 else if (0 != bResult
)
52 virtual T
&ObtainRead()
58 virtual T
&AttemptWrite(bool *bResult
)
60 if ((pSync
.AttemptWrite()) && (0 != bResult
))
62 else if (0 != bResult
)
67 virtual T
&ObtainWrite()
73 virtual void Release()
78 virtual T
Assign(T newValue
)
81 oldValue
= ObtainWrite();
87 virtual T
AttemptAssign(T newValue
, bool *bResult
)
91 oldValue
= AttemptWrite(&bRes
);
105 RWSyncT
<T
> &operator = (RWSyncT
<T
> &hOther
)
107 pSync
.ObtainWrite(); // make sure nobody accesses us atm
109 *resource
= *hOther
.resource
; // copy elements, dont bother how.
111 pSync
.Release(); // this is the obtained one :)
119 #endif /*RWSYNCT_H_*/