Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Side by Side Diff: webrtc/system_wrappers/source/event_timer_posix.h

Issue 1812533002: Fix race condition in EventTimerPosix (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Test case was still racy Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 19 matching lines...) Expand all
30 EventTimerPosix(); 30 EventTimerPosix();
31 ~EventTimerPosix() override; 31 ~EventTimerPosix() override;
32 32
33 EventTypeWrapper Wait(unsigned long max_time) override; 33 EventTypeWrapper Wait(unsigned long max_time) override;
34 bool Set() override; 34 bool Set() override;
35 35
36 bool StartTimer(bool periodic, unsigned long time) override; 36 bool StartTimer(bool periodic, unsigned long time) override;
37 bool StopTimer() override; 37 bool StopTimer() override;
38 38
39 private: 39 private:
40 friend class EventTimerPosixTest;
41
40 static bool Run(void* obj); 42 static bool Run(void* obj);
41 bool Process(); 43 bool Process();
42 EventTypeWrapper Wait(timespec* end_at); 44 EventTypeWrapper Wait(timespec* end_at, bool reset_state);
43 45
44 private: 46 virtual rtc::PlatformThread* CreateThread();
47
45 pthread_cond_t cond_; 48 pthread_cond_t cond_;
46 pthread_mutex_t mutex_; 49 pthread_mutex_t mutex_;
47 bool event_set_; 50 bool event_set_;
48 51
49 // TODO(pbos): Remove scoped_ptr and use PlatformThread directly. 52 // TODO(pbos): Remove scoped_ptr and use PlatformThread directly.
50 rtc::scoped_ptr<rtc::PlatformThread> timer_thread_; 53 rtc::scoped_ptr<rtc::PlatformThread> timer_thread_;
51 rtc::scoped_ptr<EventTimerPosix> timer_event_; 54 rtc::scoped_ptr<EventTimerPosix> timer_event_;
52 timespec created_at_; 55 timespec created_at_;
53 56
54 bool periodic_; 57 bool periodic_;
55 unsigned long time_; // In ms 58 unsigned long time_ms_;
56 unsigned long count_; 59 unsigned long count_;
60 bool is_stopping_;
57 }; 61 };
58 62
59 } // namespace webrtc 63 } // namespace webrtc
60 64
61 #endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_EVENT_POSIX_H_ 65 #endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_EVENT_POSIX_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/system_wrappers/source/event_timer_posix.cc » ('j') | webrtc/system_wrappers/source/event_timer_posix.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698