(Auto)update libjingle 71116846-> 71117224
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6680 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -142,16 +142,6 @@ struct ThreadInit {
|
|||||||
Runnable* runnable;
|
Runnable* runnable;
|
||||||
};
|
};
|
||||||
|
|
||||||
Thread::ScopedDisallowBlockingCalls::ScopedDisallowBlockingCalls()
|
|
||||||
: thread_(Thread::Current()),
|
|
||||||
previous_state_(thread_->SetAllowBlockingCalls(false)) {
|
|
||||||
}
|
|
||||||
|
|
||||||
Thread::ScopedDisallowBlockingCalls::~ScopedDisallowBlockingCalls() {
|
|
||||||
ASSERT(thread_->IsCurrent());
|
|
||||||
thread_->SetAllowBlockingCalls(previous_state_);
|
|
||||||
}
|
|
||||||
|
|
||||||
Thread::Thread(SocketServer* ss)
|
Thread::Thread(SocketServer* ss)
|
||||||
: MessageQueue(ss),
|
: MessageQueue(ss),
|
||||||
priority_(PRIORITY_NORMAL),
|
priority_(PRIORITY_NORMAL),
|
||||||
@ -160,8 +150,7 @@ Thread::Thread(SocketServer* ss)
|
|||||||
thread_(NULL),
|
thread_(NULL),
|
||||||
thread_id_(0),
|
thread_id_(0),
|
||||||
#endif
|
#endif
|
||||||
owned_(true),
|
owned_(true) {
|
||||||
blocking_calls_allowed_(true) {
|
|
||||||
SetName("Thread", this); // default name
|
SetName("Thread", this); // default name
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,8 +160,6 @@ Thread::~Thread() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool Thread::SleepMs(int milliseconds) {
|
bool Thread::SleepMs(int milliseconds) {
|
||||||
AssertBlockingIsAllowedOnCurrentThread();
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
::Sleep(milliseconds);
|
::Sleep(milliseconds);
|
||||||
return true;
|
return true;
|
||||||
@ -306,8 +293,6 @@ bool Thread::Start(Runnable* runnable) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Thread::Join() {
|
void Thread::Join() {
|
||||||
AssertBlockingIsAllowedOnCurrentThread();
|
|
||||||
|
|
||||||
if (running()) {
|
if (running()) {
|
||||||
ASSERT(!IsCurrent());
|
ASSERT(!IsCurrent());
|
||||||
#if defined(WIN32)
|
#if defined(WIN32)
|
||||||
@ -323,21 +308,6 @@ void Thread::Join() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Thread::SetAllowBlockingCalls(bool allow) {
|
|
||||||
ASSERT(IsCurrent());
|
|
||||||
bool previous = blocking_calls_allowed_;
|
|
||||||
blocking_calls_allowed_ = allow;
|
|
||||||
return previous;
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
void Thread::AssertBlockingIsAllowedOnCurrentThread() {
|
|
||||||
#ifdef _DEBUG
|
|
||||||
Thread* current = Thread::Current();
|
|
||||||
ASSERT(!current || current->blocking_calls_allowed_);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
// As seen on MSDN.
|
// As seen on MSDN.
|
||||||
// http://msdn.microsoft.com/en-us/library/xcb2z8hs(VS.71).aspx
|
// http://msdn.microsoft.com/en-us/library/xcb2z8hs(VS.71).aspx
|
||||||
@ -404,8 +374,6 @@ void Thread::Stop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Thread::Send(MessageHandler *phandler, uint32 id, MessageData *pdata) {
|
void Thread::Send(MessageHandler *phandler, uint32 id, MessageData *pdata) {
|
||||||
AssertBlockingIsAllowedOnCurrentThread();
|
|
||||||
|
|
||||||
if (fStop_)
|
if (fStop_)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -125,19 +125,6 @@ class Thread : public MessageQueue {
|
|||||||
|
|
||||||
static Thread* Current();
|
static Thread* Current();
|
||||||
|
|
||||||
// Used to catch performance regressions. Use this to disallow blocking calls
|
|
||||||
// (Invoke) for a given scope. If a synchronous call is made while this is in
|
|
||||||
// effect, an assert will be triggered.
|
|
||||||
// Note that this is a single threaded class.
|
|
||||||
class ScopedDisallowBlockingCalls {
|
|
||||||
public:
|
|
||||||
ScopedDisallowBlockingCalls();
|
|
||||||
~ScopedDisallowBlockingCalls();
|
|
||||||
private:
|
|
||||||
Thread* const thread_;
|
|
||||||
const bool previous_state_;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool IsCurrent() const {
|
bool IsCurrent() const {
|
||||||
return Current() == this;
|
return Current() == this;
|
||||||
}
|
}
|
||||||
@ -178,11 +165,8 @@ class Thread : public MessageQueue {
|
|||||||
// Uses Send() internally, which blocks the current thread until execution
|
// Uses Send() internally, which blocks the current thread until execution
|
||||||
// is complete.
|
// is complete.
|
||||||
// Ex: bool result = thread.Invoke<bool>(&MyFunctionReturningBool);
|
// Ex: bool result = thread.Invoke<bool>(&MyFunctionReturningBool);
|
||||||
// NOTE: This function can only be called when synchronous calls are allowed.
|
|
||||||
// See ScopedDisallowBlockingCalls for details.
|
|
||||||
template <class ReturnT, class FunctorT>
|
template <class ReturnT, class FunctorT>
|
||||||
ReturnT Invoke(const FunctorT& functor) {
|
ReturnT Invoke(const FunctorT& functor) {
|
||||||
AssertBlockingIsAllowedOnCurrentThread();
|
|
||||||
FunctorMessageHandler<ReturnT, FunctorT> handler(functor);
|
FunctorMessageHandler<ReturnT, FunctorT> handler(functor);
|
||||||
Send(&handler);
|
Send(&handler);
|
||||||
return handler.result();
|
return handler.result();
|
||||||
@ -245,14 +229,6 @@ class Thread : public MessageQueue {
|
|||||||
// Blocks the calling thread until this thread has terminated.
|
// Blocks the calling thread until this thread has terminated.
|
||||||
void Join();
|
void Join();
|
||||||
|
|
||||||
// Sets the per-thread allow-blocking-calls flag and returns the previous
|
|
||||||
// value.
|
|
||||||
bool SetAllowBlockingCalls(bool allow);
|
|
||||||
|
|
||||||
static void AssertBlockingIsAllowedOnCurrentThread();
|
|
||||||
|
|
||||||
friend class ScopedDisallowBlockingCalls;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void *PreRun(void *pv);
|
static void *PreRun(void *pv);
|
||||||
|
|
||||||
@ -279,7 +255,6 @@ class Thread : public MessageQueue {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool owned_;
|
bool owned_;
|
||||||
bool blocking_calls_allowed_; // By default set to |true|.
|
|
||||||
|
|
||||||
friend class ThreadManager;
|
friend class ThreadManager;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user