Add Thread::isRunning and Condition::signal(WakeUpType)
The signal() method is useful to choose whether to wake up one or all threads. Change-Id: I062ab6d3ddd306a9fb735549ea140e2a76eed75a
This commit is contained in:
parent
6090df85a8
commit
31ba37f1c8
3 changed files with 21 additions and 0 deletions
|
@ -48,6 +48,11 @@ public:
|
|||
SHARED = 1
|
||||
};
|
||||
|
||||
enum WakeUpType {
|
||||
WAKE_UP_ONE = 0,
|
||||
WAKE_UP_ALL = 1
|
||||
};
|
||||
|
||||
Condition();
|
||||
Condition(int type);
|
||||
~Condition();
|
||||
|
@ -57,6 +62,14 @@ public:
|
|||
status_t waitRelative(Mutex& mutex, nsecs_t reltime);
|
||||
// Signal the condition variable, allowing one thread to continue.
|
||||
void signal();
|
||||
// Signal the condition variable, allowing one or all threads to continue.
|
||||
void signal(WakeUpType type) {
|
||||
if (type == WAKE_UP_ONE) {
|
||||
signal();
|
||||
} else {
|
||||
broadcast();
|
||||
}
|
||||
}
|
||||
// Signal the condition variable, allowing all threads to continue.
|
||||
void broadcast();
|
||||
|
||||
|
|
|
@ -67,6 +67,9 @@ public:
|
|||
// Do not call from this object's thread; will return WOULD_BLOCK in that case.
|
||||
status_t join();
|
||||
|
||||
// Indicates whether this thread is running or not.
|
||||
bool isRunning() const;
|
||||
|
||||
#ifdef HAVE_ANDROID_OS
|
||||
// Return the thread's kernel ID, same as the thread itself calling gettid() or
|
||||
// androidGetTid(), or -1 if the thread is not running.
|
||||
|
|
|
@ -846,6 +846,11 @@ status_t Thread::join()
|
|||
return mStatus;
|
||||
}
|
||||
|
||||
bool Thread::isRunning() const {
|
||||
Mutex::Autolock _l(mLock);
|
||||
return mRunning;
|
||||
}
|
||||
|
||||
#ifdef HAVE_ANDROID_OS
|
||||
pid_t Thread::getTid() const
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue