Chromium Code Reviews| Index: runtime/platform/thread.h |
| diff --git a/runtime/platform/thread.h b/runtime/platform/thread.h |
| index 4b19f8b5286755b6274632be6481624b898e639b..bb24142d03378895f6ebea49f8b9ca7125b06c96 100644 |
| --- a/runtime/platform/thread.h |
| +++ b/runtime/platform/thread.h |
| @@ -40,6 +40,8 @@ class Thread { |
| } |
| static void SetThreadLocal(ThreadLocalKey key, uword value); |
| static intptr_t GetMaxStackSize(); |
| + static ThreadId GetCurrentThreadId(); |
| + static void GetThreadCPUUsage(int64_t* cpu_usage); |
|
siva
2013/10/28 05:19:21
maybe GetThreadCpuUsage to avoid UU ?
Cutch
2013/11/04 20:36:05
Done.
|
| }; |
| @@ -76,6 +78,7 @@ class Monitor { |
| // Wait for notification or timeout. |
| WaitResult Wait(int64_t millis); |
| + WaitResult WaitMicros(int64_t micros); |
| // Notify waiting threads. |
| void Notify(); |
| @@ -87,6 +90,59 @@ class Monitor { |
| DISALLOW_COPY_AND_ASSIGN(Monitor); |
| }; |
| + |
| +class ScopedMutexLock { |
| + public: |
| + explicit ScopedMutexLock(Mutex* mutex) : mutex_(mutex) { |
| + ASSERT(mutex_ != NULL); |
| + mutex_->Lock(); |
| + } |
| + |
| + ~ScopedMutexLock() { |
| + mutex_->Unlock(); |
| + } |
| + |
| + private: |
| + Mutex* const mutex_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ScopedMutexLock); |
| +}; |
| + |
| + |
| +class ScopedMonitorLock { |
| + public: |
| + explicit ScopedMonitorLock(Monitor* monitor) : monitor_(monitor) { |
| + ASSERT(monitor_ != NULL); |
| + monitor_->Enter(); |
| + } |
| + |
| + ~ScopedMonitorLock() { |
| + monitor_->Exit(); |
| + } |
| + |
| + Monitor::WaitResult Wait(int64_t millis = dart::Monitor::kNoTimeout) { |
| + return monitor_->Wait(millis); |
| + } |
| + |
| + Monitor::WaitResult WaitMicros(int64_t micros = dart::Monitor::kNoTimeout) { |
| + return monitor_->WaitMicros(micros); |
| + } |
| + |
| + void Notify() { |
| + monitor_->Notify(); |
| + } |
| + |
| + void NotifyAll() { |
| + monitor_->NotifyAll(); |
| + } |
| + |
| + private: |
| + Monitor* const monitor_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ScopedMonitorLock); |
| +}; |
| + |
| + |
| } // namespace dart |