Professional Documents
Culture Documents
Shared Sync Tut5
Shared Sync Tut5
Summary
Registers AtomicMRSWRegister Q. Consensus Queue<> Q. Team consensus Q.
Safe Register
Some valid value if reads and writes do overlap
$*&v 1111
33
write(1001)
read(????)
0000
1001
2007 Herlihy & Shavit
Regular Register
write(0) write(1)
read(1)
read(0)
Atomic Register
write(1001) write(1010) read(1010)
read(1001)
read(1010)
time
2007 Herlihy & Shavit 88
AtomicMRSWRegister
public class AtomicMRSWRegister<T> implements Register<T> { ThreadLocal<Long> lastStamp; // last timestamp written private StampedValue<T>[][] a_table; // each entry is SRSW atomic
public AtomicMRSWRegister(T init, int readers) { this.lastStamp = new ThreadLocal<Long>() { protected Long initialValue () { return 0; }; }; a_table = new StampedValue[readers][readers]; StampedValue<T> value = new StampedValue<T>(init); for (int i = 0; i < readers; i++){ for (int j = 0; j < readers; j++){ a_table[ i ][ j ] = value; } } }
9
AtomicMRSWRegister
public T read() { int me = ThreadID.get(); StampedValue<T> value = a_table[me][me]; // former read
for (int i = 0; i < a_table.length ; i++) // finds max in row value = StampedValue.max(value, a_table[me][i]); for (int i = 0; i < a_table.length ; i++) // writes max in column a_table[i][me] = value; }
return value ;
10
AtomicMRSWRegister
public void write (T v){ long stamp = lastStamp.get() + 1; lastStamp.set( stamp); // remember for next time StampedValue<T> value = new StampedValue<T>(stamp, v); // writes a column for (int i = 0; i < a_table.length ; i++) a_table [i][0] = value; }
11
AtomicMRSWRegister
One per thread
1 1:45 1:45 1:45 1234 1234 1234 1:45 1:45 1:45 2 1234 1234 1234 1:45 1:45 1:45 3 1234 1234 1234 1 2 3
12 12
AtomicMRSWRegister Qeustion
True/False: If we replace the atomic SRSW registers with regular SRSW registers, then the construction still yields an atomic MRSW register.
13
1:45 1234
read(2:00 5678)
read(1:45 1234)
read(2:00 5678)
In which case Blue will complete writing 2:00 5678 to its column
time
15 15
AcmRegister Qeustion
17
19