1/// @brief Resource acquisition requirement
3/// @defgroup taskrequires_resource Resource Requirements
4/// @ingroup taskrequires
7/// TaskRequiresResource ensures exclusive access to a shared resource before the task runs.
8/// The resource is acquired through the TaskResource interface, which provides different
9/// acquisition strategies (mutex, FIFO, LIFO).
11/// Tracks ownership state to prevent re-acquiring an already owned resource.
12/// The resource is held for the duration of task execution and released when done.
13#include "taskrequires.cxh"
14#include <cx/taskqueue/resource/taskresource.cxh>
16/// Requirement for exclusive access to a shared resource.
17class TaskRequiresResource extends TaskRequires {
18 bool owned; ///< True if resource has been acquired by this requirement
19 object:TaskResource res; ///< Resource to acquire
21 /// Create a resource requirement.
22 /// @param res Resource to acquire exclusively before task runs
23 /// @return New TaskRequiresResource instance
24 factory create([in] TaskResource *res);