| Index: runtime/platform/thread.h
|
| diff --git a/runtime/platform/thread.h b/runtime/platform/thread.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0eb8da13b2b502412cc21ac54951290785a4a64e
|
| --- /dev/null
|
| +++ b/runtime/platform/thread.h
|
| @@ -0,0 +1,86 @@
|
| +// 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 {
|
| +
|
| +class Thread {
|
| + public:
|
| + // Function to be called on thread start.
|
| + typedef void (*ThreadStartFunction) (uword parameter);
|
| +
|
| + // TODO(iposva): Define the proper interface for spawning and killing threads.
|
| + Thread(ThreadStartFunction function, uword parameters);
|
| + ~Thread();
|
| +
|
| + private:
|
| + ThreadData data_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(Thread);
|
| +};
|
| +
|
| +
|
| +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_
|
|
|