Files
allwpilib/wpilibc/wpilibC++/include/Task.inc
Tyler Veness fd4c169658 artf4149: Removed references to VxWorks
Implemented setTaskPriority() and getTaskPriority() in Task HAL API

Removed all other unimplemented functions in HAL and removed spawnTask()

Replaced instances of pthread_t* with TASK typedef

Removed unused HAL error constants and removed commented-out classes and functions in wpilibj's HALLibrary

Changed Task class API to match the construction semantics of a std::thread

Change-Id: I3bc951a3da90d24c5589fae4d1ca2bb60225c873
2015-07-20 11:49:29 -04:00

26 lines
866 B
C++

#include "HAL/HAL.hpp"
#include <atomic>
/**
* Create and launch a task.
* @param name The name of the task. "FRC_" will be prepended to the task name.
* @param function The address of the function to run as the new task.
* @param args A parameter pack of arguments to pass to the function.
* @param priority The VxWorks priority for the task.
* @param stackSize The size of the stack for the task
*/
template <class Function, class... Args>
Task::Task(const char* name, Function&& function, Args&&... args) {
m_taskName = "FRC_";
m_taskName += name;
std::cout << "[HAL] Starting task " << m_taskName << "..." << std::endl;
m_thread = std::thread(function, args...);
SetPriority(kDefaultPriority);
static std::atomic<int32_t> instances{0};
instances++;
HALReport(HALUsageReporting::kResourceType_Task, instances, 0, m_taskName.c_str());
}