36 elem._task = task::currentTask();
38 _stop_list_mutex.lock();
39 _stop_list.push_back(&elem);
40 _stop_list_mutex.unlock();
44 task::enterCritical();
45 elem._task->suspend();
47 task::leaveCritical();
53 template<
typename Predicate>
59 _stop_list_mutex.lock();
60 if (_stop_list.getSize()) {
61 stop_list_elem * elem = _stop_list.getHead();
62 _stop_list.remove(elem);
63 elem->_task->resume();
65 _stop_list_mutex.unlock();
71 _stop_list_mutex.lock();
72 while (_stop_list.getSize()) {
73 stop_list_elem * elem = _stop_list.getHead();
74 _stop_list.remove(elem);
75 elem->_task->resume();
77 _stop_list_mutex.unlock();
88 struct stop_list_elem {
89 stop_list_elem * _prev;
90 stop_list_elem * _next;