Changes in tests/unified_locking/fast.cfa [4ae968e:8f1a99e]
- File:
-
- 1 edited
-
tests/unified_locking/fast.cfa (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
tests/unified_locking/fast.cfa
r4ae968e r8f1a99e 1 #include <fstream.hfa> 1 2 #include <locks.hfa> 3 #include <thread.hfa> 2 4 3 #define LOCK fast_lock 4 #include "mutex_test.hfa" 5 const unsigned int num_times = 50; 6 7 struct MutexObj { 8 fast_lock l; 9 thread$ * id; 10 uint32_t sum; 11 }; 12 13 MutexObj mo; 14 15 void trash() { 16 unsigned t[100]; 17 for(i; 100) { 18 t[i] = 0xDEADBEEF; 19 } 20 } 21 22 uint32_t cs() { 23 thread$ * me = active_thread(); 24 uint32_t value; 25 lock(mo.l); 26 { 27 uint32_t tsum = mo.sum; 28 mo.id = me; 29 yield(random(5)); 30 value = ((uint32_t)random()) ^ ((uint32_t)me); 31 if(mo.id != me) sout | "Intruder!"; 32 mo.sum = tsum + value; 33 } 34 unlock(mo.l); 35 return value; 36 } 37 38 thread LockCheck { 39 uint32_t sum; 40 }; 41 42 void main(LockCheck & this) { 43 this.sum = 0; 44 for(num_times) { 45 trash(); 46 this.sum += cs(); 47 trash(); 48 yield(random(10)); 49 } 50 } 5 51 6 52 int main() { 7 test(); 53 uint32_t sum = -32; 54 mo.sum = -32; 55 processor p[2]; 56 sout | "Starting"; 57 { 58 LockCheck checkers[13]; 59 for(i;13) { 60 sum += join(checkers[i]).sum; 61 } 62 } 63 sout | "Done!"; 64 if(sum == mo.sum) sout | "Match!"; 65 else sout | "No Match!" | sum | "vs" | mo.sum; 8 66 }
Note:
See TracChangeset
for help on using the changeset viewer.