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_ |