- msg_task_t task = xbt_new(s_msg_task_t, 1);
- simdata_task_t simdata = xbt_new(s_simdata_task_t, 1);
- task->simdata = simdata;
-
- /* Task structure */
- task->name = xbt_strdup(name);
- task->data = data;
-
- /* Simulator Data */
- simdata->compute = NULL;
- simdata->comm = NULL;
- simdata->bytes_amount = message_size;
- simdata->flops_amount = flop_amount;
- simdata->sender = NULL;
- simdata->receiver = NULL;
- simdata->source = NULL;
- simdata->priority = 1.0;
- simdata->bound = 0;
- simdata->affinity_mask_db = xbt_dict_new_homogeneous(NULL);
- simdata->rate = -1.0;
- simdata->isused = 0;
-
- simdata->host_nb = 0;
- simdata->host_list = NULL;
- simdata->flops_parallel_amount = NULL;
- simdata->bytes_parallel_amount = NULL;
- TRACE_msg_task_create(task);
-
- return task;
-}
-
-/** \ingroup m_task_management
- * \brief Creates a new #msg_task_t (a parallel one....).
- *
- * A constructor for #msg_task_t taking six arguments and returning the corresponding object.
- * \param name a name for the object. It is for user-level information and can be NULL.
- * \param host_nb the number of hosts implied in the parallel task.
- * \param host_list an array of \p host_nb msg_host_t.
- * \param flops_amount an array of \p host_nb doubles.
- * flops_amount[i] is the total number of operations that have to be performed on host_list[i].
- * \param bytes_amount an array of \p host_nb* \p host_nb doubles.
- * \param data a pointer to any data may want to attach to the new object.
- * It is for user-level information and can be NULL.
- * It can be retrieved with the function \ref MSG_task_get_data.
- * \see msg_task_t
- * \return The new corresponding object.
- */
-msg_task_t MSG_parallel_task_create(const char *name, int host_nb, const msg_host_t * host_list,
- double *flops_amount, double *bytes_amount, void *data)
+ static std::atomic_ullong counter{0};
+ id_ = counter++;
+ if (MC_is_active())
+ MC_ignore_heap(&(id_), sizeof(id_));
+}
+
+Task::Task(std::string name, std::vector<s4u::Host*> hosts, std::vector<double> flops_amount,
+ std::vector<double> bytes_amount, void* data)
+ : Task(std::move(name), 1.0, 0, data)