Reduce the scope of rtc::Event::Wait() locking.

Reduces contention on event_mutex_ while taking gettimeofday(). Impact
highly hypothetical at this point, but less locking is better.

BUG=
R=tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1716563003 .

Cr-Commit-Position: refs/heads/master@{#11706}
This commit is contained in:
Peter Boström 2016-02-22 11:31:49 +01:00
parent d1f718bb1e
commit 7ddc9deb4d

View File

@ -79,14 +79,13 @@ void Event::Reset() {
}
bool Event::Wait(int milliseconds) {
pthread_mutex_lock(&event_mutex_);
int error = 0;
struct timespec ts;
if (milliseconds != kForever) {
// Converting from seconds and microseconds (1e-6) plus
// milliseconds (1e-3) to seconds and nanoseconds (1e-9).
struct timespec ts;
#if HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE
// Use relative time version, which tends to be more efficient for
// pthread implementations where provided (like on Android).
@ -105,7 +104,10 @@ bool Event::Wait(int milliseconds) {
ts.tv_nsec -= 1000000000;
}
#endif
}
pthread_mutex_lock(&event_mutex_);
if (milliseconds != kForever) {
while (!event_status_ && error == 0) {
#if HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE
error = pthread_cond_timedwait_relative_np(