Chromium Code Reviews| Index: runtime/platform/thread.h |
| diff --git a/runtime/platform/thread.h b/runtime/platform/thread.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..51a82afdbc08353316130877eefa14998622e6f1 |
| --- /dev/null |
| +++ b/runtime/platform/thread.h |
| @@ -0,0 +1,70 @@ |
| +// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +#ifndef PLATFORM_THREAD_H_ |
| +#define PLATFORM_THREAD_H_ |
| + |
| +#include "platform/globals.h" |
| + |
| +// Declare the OS-specific types ahead of defining the generic classes. |
| +#if defined(TARGET_OS_LINUX) |
| +#include "platform/thread_linux.h" |
| +#elif defined(TARGET_OS_MACOS) |
| +#include "platform/thread_macos.h" |
| +#elif defined(TARGET_OS_WINDOWS) |
| +#include "platform/thread_win.h" |
| +#else |
| +#error Unknown target os. |
| +#endif |
| + |
| +namespace dart { |
| + |
|
Ivan Posva
2012/01/13 23:33:41
Why is class Thread not part of the header platfor
Søren Gjesse
2012/01/16 16:12:19
I was not sure we needed it but it makes sense to
|
| +class Mutex { |
| + public: |
| + Mutex(); |
| + ~Mutex(); |
| + |
| + void Lock(); |
| + bool TryLock(); |
| + void Unlock(); |
| + |
| + private: |
| + MutexData data_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(Mutex); |
| +}; |
| + |
| + |
| +class Monitor { |
| + public: |
| + enum WaitResult { |
| + kNotified, |
| + kTimedOut |
| + }; |
| + |
| + static const int64_t kNoTimeout = 0; |
| + |
| + Monitor(); |
| + ~Monitor(); |
| + |
| + void Enter(); |
| + void Exit(); |
| + |
| + // Wait for notification or timeout. |
| + WaitResult Wait(int64_t millis); |
| + |
| + // Notify waiting threads. |
| + void Notify(); |
| + void NotifyAll(); |
| + |
| + private: |
| + MonitorData data_; // OS-specific data. |
| + |
| + DISALLOW_COPY_AND_ASSIGN(Monitor); |
| +}; |
| + |
| +} // namespace dart |
| + |
| + |
| +#endif // PLATFORM_THREAD_H_ |