Commit a711d6bf authored by tqcq's avatar tqcq
Browse files

Merge branch 'master' of code.uocat.com:tqcq/sled

parents cb3b2200 5f528c1a
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -3,10 +3,11 @@
#include "sled/task_queue/task_queue_base.h"

namespace sled {
ThreadPool::ThreadPool(int num_threads)
ThreadPool::ThreadPool(int num_threads) : delayed_thread_(sled::Thread::Create())
{
    if (num_threads == -1) { num_threads = std::thread::hardware_concurrency(); }
    scheduler_ = new sled::Scheduler(sled::Scheduler::Config().setWorkerThreadCount(num_threads));
    delayed_thread_->Start();
}

ThreadPool::~ThreadPool() { delete scheduler_; }
@@ -27,11 +28,18 @@ ThreadPool::PostDelayedTaskImpl(std::function<void()> &&task,
                                const PostDelayedTaskTraits &traits,
                                const Location &location)
{
    auto move_task_to_fiber = [task]() { task(); };
    if (traits.high_precision) {
        delayed_thread_->PostDelayedTaskWithPrecision(TaskQueueBase::DelayPrecision::kHigh, std::move(task), delay,
        delayed_thread_->PostDelayedTaskWithPrecision(
            TaskQueueBase::DelayPrecision::kHigh,
            std::move(move_task_to_fiber),
            delay,
            location);
    } else {
        delayed_thread_->PostDelayedTaskWithPrecision(TaskQueueBase::DelayPrecision::kLow, std::move(task), delay,
        delayed_thread_->PostDelayedTaskWithPrecision(
            TaskQueueBase::DelayPrecision::kLow,
            std::move(move_task_to_fiber),
            delay,
            location);
    }
}