| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "mojo/public/cpp/utility/mutex.h" | 5 #include "mojo/public/cpp/utility/mutex.h" |
| 6 | 6 |
| 7 #include <stdlib.h> // For |rand()|. | 7 #include <stdlib.h> // For |rand()|. |
| 8 #include <time.h> // For |nanosleep()| (defined by POSIX). | 8 #include <time.h> // For |nanosleep()| (defined by POSIX). |
| 9 | 9 |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 public: | 107 public: |
| 108 // Takes ownership of |fiddler|. | 108 // Takes ownership of |fiddler|. |
| 109 FiddlerThread(Fiddler* fiddler) | 109 FiddlerThread(Fiddler* fiddler) |
| 110 : fiddler_(fiddler) { | 110 : fiddler_(fiddler) { |
| 111 } | 111 } |
| 112 | 112 |
| 113 virtual ~FiddlerThread() { | 113 virtual ~FiddlerThread() { |
| 114 delete fiddler_; | 114 delete fiddler_; |
| 115 } | 115 } |
| 116 | 116 |
| 117 virtual void Run() MOJO_OVERRIDE { | 117 virtual void Run() override { fiddler_->Fiddle(); } |
| 118 fiddler_->Fiddle(); | |
| 119 } | |
| 120 | 118 |
| 121 private: | 119 private: |
| 122 Fiddler* const fiddler_; | 120 Fiddler* const fiddler_; |
| 123 | 121 |
| 124 MOJO_DISALLOW_COPY_AND_ASSIGN(FiddlerThread); | 122 MOJO_DISALLOW_COPY_AND_ASSIGN(FiddlerThread); |
| 125 }; | 123 }; |
| 126 | 124 |
| 127 // This does a stress test (that also checks exclusion). | 125 // This does a stress test (that also checks exclusion). |
| 128 TEST(MutexTest, ThreadedStress) { | 126 TEST(MutexTest, ThreadedStress) { |
| 129 static const size_t kNumThreads = 20; | 127 static const size_t kNumThreads = 20; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 for (size_t i = 0; i < kNumThreads; i++) | 161 for (size_t i = 0; i < kNumThreads; i++) |
| 164 delete fiddler_threads[i]; | 162 delete fiddler_threads[i]; |
| 165 fiddler_threads.clear(); | 163 fiddler_threads.clear(); |
| 166 } | 164 } |
| 167 | 165 |
| 168 class TryThread : public Thread { | 166 class TryThread : public Thread { |
| 169 public: | 167 public: |
| 170 explicit TryThread(Mutex* mutex) : mutex_(mutex), try_lock_succeeded_() {} | 168 explicit TryThread(Mutex* mutex) : mutex_(mutex), try_lock_succeeded_() {} |
| 171 virtual ~TryThread() {} | 169 virtual ~TryThread() {} |
| 172 | 170 |
| 173 virtual void Run() MOJO_OVERRIDE { | 171 virtual void Run() override { |
| 174 try_lock_succeeded_ = mutex_->TryLock(); | 172 try_lock_succeeded_ = mutex_->TryLock(); |
| 175 if (try_lock_succeeded_) | 173 if (try_lock_succeeded_) |
| 176 mutex_->Unlock(); | 174 mutex_->Unlock(); |
| 177 } | 175 } |
| 178 | 176 |
| 179 bool try_lock_succeeded() const { return try_lock_succeeded_; } | 177 bool try_lock_succeeded() const { return try_lock_succeeded_; } |
| 180 | 178 |
| 181 private: | 179 private: |
| 182 Mutex* const mutex_; | 180 Mutex* const mutex_; |
| 183 bool try_lock_succeeded_; | 181 bool try_lock_succeeded_; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 // Destroy lock with lock held. | 251 // Destroy lock with lock held. |
| 254 EXPECT_DEATH_IF_SUPPORTED({ | 252 EXPECT_DEATH_IF_SUPPORTED({ |
| 255 Mutex mutex; | 253 Mutex mutex; |
| 256 mutex.Lock(); | 254 mutex.Lock(); |
| 257 }, ""); | 255 }, ""); |
| 258 } | 256 } |
| 259 #endif // !defined(NDEBUG) | 257 #endif // !defined(NDEBUG) |
| 260 | 258 |
| 261 } // namespace | 259 } // namespace |
| 262 } // namespace mojo | 260 } // namespace mojo |
| OLD | NEW |