Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
SkExecutor.h
Go to the documentation of this file.
1/*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkExecutor_DEFINED
9#define SkExecutor_DEFINED
10
11#include <functional>
12#include <memory>
14
16public:
17 virtual ~SkExecutor();
18
19 // Create a thread pool SkExecutor with a fixed thread count, by default the number of cores.
20 static std::unique_ptr<SkExecutor> MakeFIFOThreadPool(int threads = 0,
21 bool allowBorrowing = true);
22 static std::unique_ptr<SkExecutor> MakeLIFOThreadPool(int threads = 0,
23 bool allowBorrowing = true);
24
25 // There is always a default SkExecutor available by calling SkExecutor::GetDefault().
26 static SkExecutor& GetDefault();
27 static void SetDefault(SkExecutor*); // Does not take ownership. Not thread safe.
28
29 // Add work to execute.
30 virtual void add(std::function<void(void)>) = 0;
31
32 // If it makes sense for this executor, use this thread to execute work for a little while.
33 virtual void borrow() {}
34
35protected:
36 SkExecutor() = default;
37 SkExecutor(const SkExecutor&) = delete;
38 SkExecutor& operator=(const SkExecutor&) = delete;
39};
40
41#endif//SkExecutor_DEFINED
#define SK_API
Definition SkAPI.h:35
SkExecutor & operator=(const SkExecutor &)=delete
SkExecutor()=default
virtual void add(std::function< void(void)>)=0
virtual void borrow()
Definition SkExecutor.h:33
SkExecutor(const SkExecutor &)=delete