forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kernel: Remove dependency on CScheduler
By defining a virtual interface class for the scheduler client, users of the kernel can now define their own event consuming infrastructure, without having to spawn threads or rely on the scheduler design. Removing CScheduler also allows removing the thread and exception modules from the kernel library.
- Loading branch information
1 parent
06069b3
commit d5228ef
Showing
8 changed files
with
85 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
// Copyright (c) 2024-present The Bitcoin Core developers | ||
// Distributed under the MIT software license, see the accompanying | ||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||
|
||
#ifndef BITCOIN_UTIL_TASK_RUNNER_H | ||
#define BITCOIN_UTIL_TASK_RUNNER_H | ||
|
||
#include <cstddef> | ||
#include <functional> | ||
|
||
namespace util { | ||
|
||
/** @file | ||
* This header provides an interface and simple implementation for a task | ||
* runner. Another threaded, serial implementation using a queue is available in | ||
* the scheduler module's SerialTaskRunner. | ||
*/ | ||
|
||
class TaskRunnerInterface | ||
{ | ||
public: | ||
virtual ~TaskRunnerInterface() {} | ||
|
||
/** | ||
* The callback can either be queued for later/asynchronous/threaded | ||
* processing, or be executed immediately for synchronous processing. | ||
*/ | ||
|
||
virtual void insert(std::function<void()> func) = 0; | ||
|
||
/** | ||
* Forces the processing of all pending events. | ||
*/ | ||
virtual void flush() = 0; | ||
|
||
/** | ||
* Returns the number of currently pending events. | ||
*/ | ||
virtual size_t size() = 0; | ||
}; | ||
|
||
class ImmediateTaskRunner : public TaskRunnerInterface | ||
{ | ||
public: | ||
void insert(std::function<void()> func) override { func(); } | ||
void flush() override {} | ||
size_t size() override { return 0; } | ||
}; | ||
|
||
} // namespace util | ||
|
||
#endif // BITCOIN_UTIL_TASK_RUNNER_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters