Files
platform-external-webrtc/webrtc/base/sequenced_task_checker_impl.h
kthelgason 44e0efe0e6 Use queue label as id in SequencedTaskChecker when not running on TaskQueue
This is intended to make SequencedTaskChecker work for native dispatch queues
on iOS and macOS. These labels can be compared by their pointers to determine
if a task is running on the same queue.

BUG=webrtc:6643

Review-Url: https://codereview.webrtc.org/2464383002
Cr-Commit-Position: refs/heads/master@{#14900}
2016-11-02 17:28:23 +00:00

46 lines
1.4 KiB
C++

/*
* Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef WEBRTC_BASE_SEQUENCED_TASK_CHECKER_IMPL_H_
#define WEBRTC_BASE_SEQUENCED_TASK_CHECKER_IMPL_H_
#include "webrtc/base/thread_checker.h"
namespace rtc {
class TaskQueue;
// Real implementation of SequencedTaskChecker, for use in debug mode, or
// for temporary use in release mode.
//
// Note: You should almost always use the SequencedTaskChecker class to get the
// right version for your build configuration.
class SequencedTaskCheckerImpl {
public:
SequencedTaskCheckerImpl();
~SequencedTaskCheckerImpl();
bool CalledSequentially() const;
// Changes the task queue or thread that is checked for in IsCurrent. This
// may be useful when an object may be created on one task queue / thread and
// then used exclusively on another thread.
void Detach();
private:
typedef const void* QueueId;
CriticalSection lock_;
ThreadChecker thread_checker_;
mutable bool attached_;
mutable QueueId valid_queue_;
};
} // namespace rtc
#endif // WEBRTC_BASE_SEQUENCED_TASK_CHECKER_IMPL_H_