Turi Create  4.0
GrandCentralDispatchQueue.hpp
1 /* Copyright © 2020 Apple Inc. All rights reserved.
2  *
3  * Use of this source code is governed by a BSD-3-clause license that can
4  * be found in the LICENSE.txt file or at
5  * https://opensource.org/licenses/BSD-3-Clause
6  */
7 
8 #pragma once
9 
10 #include <dispatch/dispatch.h>
11 
12 #include <ml/neural_net/TaskQueue.hpp>
13 
14 namespace turi {
15 namespace neural_net {
16 
17 /// Concrete TaskQueue implementation wrapping Grand Central Dispatch/
19  public:
20  static std::shared_ptr<GrandCentralDispatchQueue> GetGlobalConcurrentQueue();
21  static std::unique_ptr<GrandCentralDispatchQueue> CreateSerialQueue(const char* label);
22 
23  explicit GrandCentralDispatchQueue(dispatch_queue_t impl);
25 
26  // Not movable or copyable.
30  delete;
32 
33  void DispatchAsync(std::function<void()> task) override;
34  void DispatchSync(std::function<void()> task) override;
35  void DispatchApply(size_t n, std::function<void(size_t i)> task) override;
36 
37  private:
38  dispatch_queue_t impl_;
39 };
40 
41 } // namespace neural_net
42 } // namespace turi
void DispatchApply(size_t n, std::function< void(size_t i)> task) override
void DispatchSync(std::function< void()> task) override
void DispatchAsync(std::function< void()> task) override
Concrete TaskQueue implementation wrapping Grand Central Dispatch/.
Abstract task queue interface modeled after Grand Central Dispatch.
Definition: TaskQueue.hpp:17