Преглед на файлове

调度器提供对现有所有协程调用stop token进行打断

3.0.0
tearshark преди 2 години
родител
ревизия
bf671b2193
променени са 2 файла, в които са добавени 15 реда и са изтрити 0 реда
  1. 5
    0
      include/librf/src/scheduler.h
  2. 10
    0
      source/scheduler.cpp

+ 5
- 0
include/librf/src/scheduler.h Целия файл

@@ -51,6 +51,11 @@ namespace librf

//void break_all();

/**
* @brief 要求所有已经使用了stop token功能的协程停止
*/
LIBRF_API void request_stop_all_if_possible();

/**
* @brief 将一个协程加入到调度器里开始运行。
* @details 推荐使用go或者GO这两个宏来启动协程。\n

+ 10
- 0
source/scheduler.cpp Целия файл

@@ -131,6 +131,16 @@ namespace librf
return task_ptr;
}

LIBRF_API void scheduler_t::request_stop_all_if_possible()
{
scoped_lock<spinlock> __guard(_lock_ready);

for (auto& kv : this->_ready_task)
kv.second->request_stop_if_possible();
//this->_ready_task.clear();
this->_timer->clear();
}

/*
void scheduler_t::cancel_all_task_()
{

Loading…
Отказ
Запис