namespace simgrid {
namespace xbt {
-/** \addtogroup XBT_parmap
- * \ingroup XBT_misc
- * \brief Parallel map class
- * \{
- */
+/** @addtogroup XBT_parmap
+ * @ingroup XBT_misc
+ * @brief Parallel map class
+ * @{
+ */
template <typename T> class Parmap {
public:
Parmap(unsigned num_workers, e_xbt_parmap_mode_t mode);
enum Flag { PARMAP_WORK, PARMAP_DESTROY };
/**
- * \brief Thread data transmission structure
+ * @brief Thread data transmission structure
*/
class ThreadData {
public:
};
/**
- * \brief Synchronization object (different specializations).
+ * @brief Synchronization object (different specializations).
*/
class Synchro {
public:
explicit Synchro(Parmap<T>& parmap) : parmap(parmap) {}
virtual ~Synchro() = default;
/**
- * \brief Wakes all workers and waits for them to finish the tasks.
+ * @brief Wakes all workers and waits for them to finish the tasks.
*
* This function is called by the controller thread.
*/
virtual void master_signal() = 0;
/**
- * \brief Starts the parmap: waits for all workers to be ready and returns.
+ * @brief Starts the parmap: waits for all workers to be ready and returns.
*
* This function is called by the controller thread.
*/
virtual void master_wait() = 0;
/**
- * \brief Ends the parmap: wakes the controller thread when all workers terminate.
+ * @brief Ends the parmap: wakes the controller thread when all workers terminate.
*
* This function is called by all worker threads when they end (not including the controller).
*/
virtual void worker_signal() = 0;
/**
- * \brief Waits for some work to process.
+ * @brief Waits for some work to process.
*
* This function is called by each worker thread (not including the controller) when it has no more work to do.
*
- * \param round the expected round number
+ * @param round the expected round number
*/
virtual void worker_wait(unsigned) = 0;
};
/**
- * \brief Creates a parallel map object
- * \param num_workers number of worker threads to create
- * \param mode how to synchronize the worker threads
+ * @brief Creates a parallel map object
+ * @param num_workers number of worker threads to create
+ * @param mode how to synchronize the worker threads
*/
template <typename T> Parmap<T>::Parmap(unsigned num_workers, e_xbt_parmap_mode_t mode)
{
}
/**
- * \brief Destroys a parmap
+ * @brief Destroys a parmap
*/
template <typename T> Parmap<T>::~Parmap()
{
}
/**
- * \brief Applies a list of tasks in parallel.
- * \param fun the function to call in parallel
- * \param data each element of this vector will be passed as an argument to fun
+ * @brief Applies a list of tasks in parallel.
+ * @param fun the function to call in parallel
+ * @param data each element of this vector will be passed as an argument to fun
*/
template <typename T> void Parmap<T>::apply(void (*fun)(T), const std::vector<T>& data)
{
}
/**
- * \brief Returns a next task to process.
+ * @brief Returns a next task to process.
*
* Worker threads call this function to get more work.
*
- * \return the next task to process, or throws a std::out_of_range exception if there is no more work
+ * @return the next task to process, or throws a std::out_of_range exception if there is no more work
*/
template <typename T> boost::optional<T> Parmap<T>::next()
{
}
/**
- * \brief Main work loop: applies fun to elements in turn.
+ * @brief Main work loop: applies fun to elements in turn.
*/
template <typename T> void Parmap<T>::work()
{
/**
* Get a synchronization object for given mode.
- * \param mode the synchronization mode
+ * @param mode the synchronization mode
*/
template <typename T> typename Parmap<T>::Synchro* Parmap<T>::new_synchro(e_xbt_parmap_mode_t mode)
{
}
/**
- * \brief Main function of a worker thread.
+ * @brief Main function of a worker thread.
*/
template <typename T> void* Parmap<T>::worker_main(void* arg)
{
}
}
-/** \} */
+/** @} */
}
}