| Index: runtime/vm/os_thread_linux.cc
|
| diff --git a/runtime/vm/os_thread_linux.cc b/runtime/vm/os_thread_linux.cc
|
| index f82123306e0c9d8141b3810da7edf58869f618a3..a0e68f1870e5b3222039a3b5467aea05d29cd214 100644
|
| --- a/runtime/vm/os_thread_linux.cc
|
| +++ b/runtime/vm/os_thread_linux.cc
|
| @@ -341,6 +341,22 @@ Monitor::~Monitor() {
|
| }
|
|
|
|
|
| +bool Monitor::TryEnter() {
|
| + int result = pthread_mutex_trylock(data_.mutex());
|
| + // Return false if the lock is busy and locking failed.
|
| + if (result == EBUSY) {
|
| + return false;
|
| + }
|
| + ASSERT_PTHREAD_SUCCESS(result); // Verify no other errors.
|
| +#if defined(DEBUG)
|
| + // When running with assertions enabled we track the owner.
|
| + ASSERT(owner_ == OSThread::kInvalidThreadId);
|
| + owner_ = OSThread::GetCurrentThreadId();
|
| +#endif // defined(DEBUG)
|
| + return true;
|
| +}
|
| +
|
| +
|
| void Monitor::Enter() {
|
| int result = pthread_mutex_lock(data_.mutex());
|
| VALIDATE_PTHREAD_RESULT(result);
|
|
|