OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef BASE_MAC_LIBDISPATCH_SEQUENCED_TASK_RUNNER_H_ | 5 #ifndef BASE_MAC_LIBDISPATCH_SEQUENCED_TASK_RUNNER_H_ |
6 #define BASE_MAC_LIBDISPATCH_SEQUENCED_TASK_RUNNER_H_ | 6 #define BASE_MAC_LIBDISPATCH_SEQUENCED_TASK_RUNNER_H_ |
7 | 7 |
8 #include <dispatch/dispatch.h> | 8 #include <dispatch/dispatch.h> |
9 | 9 |
10 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 // - No nested loops can be run, and all tasks are run non-nested. | 31 // - No nested loops can be run, and all tasks are run non-nested. |
32 // - Work scheduled via libdispatch runs at the same priority as and is | 32 // - Work scheduled via libdispatch runs at the same priority as and is |
33 // interleaved with posted tasks, though FIFO order is guaranteed. | 33 // interleaved with posted tasks, though FIFO order is guaranteed. |
34 // | 34 // |
35 class BASE_EXPORT LibDispatchTaskRunner : public base::SingleThreadTaskRunner { | 35 class BASE_EXPORT LibDispatchTaskRunner : public base::SingleThreadTaskRunner { |
36 public: | 36 public: |
37 // Starts a new serial dispatch queue with a given name. | 37 // Starts a new serial dispatch queue with a given name. |
38 explicit LibDispatchTaskRunner(const char* name); | 38 explicit LibDispatchTaskRunner(const char* name); |
39 | 39 |
40 // base::TaskRunner: | 40 // base::TaskRunner: |
41 virtual bool PostDelayedTask(const tracked_objects::Location& from_here, | 41 bool PostDelayedTask(const tracked_objects::Location& from_here, |
42 const Closure& task, | 42 const Closure& task, |
43 base::TimeDelta delay) OVERRIDE; | 43 base::TimeDelta delay) override; |
44 virtual bool RunsTasksOnCurrentThread() const OVERRIDE; | 44 bool RunsTasksOnCurrentThread() const override; |
45 | 45 |
46 // base::SequencedTaskRunner: | 46 // base::SequencedTaskRunner: |
47 virtual bool PostNonNestableDelayedTask( | 47 bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here, |
48 const tracked_objects::Location& from_here, | 48 const Closure& task, |
49 const Closure& task, | 49 base::TimeDelta delay) override; |
50 base::TimeDelta delay) OVERRIDE; | |
51 | 50 |
52 // This blocks the calling thread until all work on the dispatch queue has | 51 // This blocks the calling thread until all work on the dispatch queue has |
53 // been run and the queue has been destroyed. Destroying a queue requires | 52 // been run and the queue has been destroyed. Destroying a queue requires |
54 // ALL retained references to it to be released. Any new tasks posted to | 53 // ALL retained references to it to be released. Any new tasks posted to |
55 // this thread after shutdown are dropped. | 54 // this thread after shutdown are dropped. |
56 void Shutdown(); | 55 void Shutdown(); |
57 | 56 |
58 // Returns the dispatch queue associated with this task runner, for use with | 57 // Returns the dispatch queue associated with this task runner, for use with |
59 // system APIs that take dispatch queues. The caller is responsible for | 58 // system APIs that take dispatch queues. The caller is responsible for |
60 // retaining the result. | 59 // retaining the result. |
(...skipping 11 matching lines...) Expand all Loading... |
72 dispatch_queue_t queue_; | 71 dispatch_queue_t queue_; |
73 | 72 |
74 // The event on which Shutdown waits until Finalizer runs. | 73 // The event on which Shutdown waits until Finalizer runs. |
75 base::WaitableEvent queue_finalized_; | 74 base::WaitableEvent queue_finalized_; |
76 }; | 75 }; |
77 | 76 |
78 } // namespace mac | 77 } // namespace mac |
79 } // namespace base | 78 } // namespace base |
80 | 79 |
81 #endif // BASE_MAC_LIBDISPATCH_SEQUENCED_TASK_RUNNER_H_ | 80 #endif // BASE_MAC_LIBDISPATCH_SEQUENCED_TASK_RUNNER_H_ |
OLD | NEW |