| #include "test_utils.h" |
| Mutex mu1; // This Mutex guards var. |
| Mutex mu2; // This Mutex is not related to var. |
| int var; // GUARDED_BY(mu1) |
| |
| void Thread1() { // Runs in thread named 'test-thread-1'. |
| MutexLock lock(&mu1); // Correct Mutex. |
| var = 1; |
| } |
| |
| void Thread2() { // Runs in thread named 'test-thread-2'. |
| MutexLock lock(&mu2); // Wrong Mutex. |
| var = 2; |
| } |
| |
| int main() { |
| ANNOTATE_TRACE_MEMORY(&var); |
| var = 0; |
| MyThread t1(Thread1, NULL, "test-thread-1"); |
| MyThread t2(Thread2, NULL, "test-thread-2"); |
| t1.Start(); |
| t2.Start(); |
| t1.Join(); |
| t2.Join(); |
| } |