Use a raw function pointer instead of std::function objects in thread pool.

std::function can have an allocation cost when it's created, and also adds overhead to function calls. Since this API must be used from C, using a raw function pointer is good enough.
PiperOrigin-RevId: 562760324
Change-Id: I2b714a13e07a2b71566d013f21f76c506e817a52
This commit is contained in:
Nimrod Gileadi
2023-09-05 06:28:58 -07:00
committed by Copybara-Service
parent edbe9ce86f
commit f976d6d228
6 changed files with 8 additions and 9 deletions
+3 -3
View File
@@ -20,13 +20,13 @@
#ifdef __cplusplus
#include <atomic>
#include <functional>
#include <thread>
namespace mujoco {
class Task {
public:
using FunctionPtr = void* (*)(void*);
enum Status {
QUEUED,
COMPLETE,
@@ -34,7 +34,7 @@ class Task {
static void Initialize(
Task* task,
std::function<void*(void*)> start_routine,
FunctionPtr start_routine,
void* args) {
// instantiate a task at the pointer passed in
new(task) Task();
@@ -55,7 +55,7 @@ class Task {
}
private:
std::function<void*(void*)> start_routine_;
FunctionPtr start_routine_;
void* args_;