Просмотр исходного кода

hle: kernel: service_thread: Add parameter for thread pool size.

bunnei 5 лет назад
Родитель
Сommit
8bc3d66354

+ 1 - 1
src/core/hle/kernel/server_session.cpp

@@ -34,7 +34,7 @@ ResultVal<std::shared_ptr<ServerSession>> ServerSession::Create(KernelCore& kern
 
 
     session->name = std::move(name);
     session->name = std::move(name);
     session->parent = std::move(parent);
     session->parent = std::move(parent);
-    session->service_thread = std::make_unique<ServiceThread>(kernel);
+    session->service_thread = std::make_unique<ServiceThread>(kernel, 1);
 
 
     return MakeResult(std::move(session));
     return MakeResult(std::move(session));
 }
 }

+ 5 - 5
src/core/hle/kernel/service_thread.cpp

@@ -22,7 +22,7 @@ namespace Kernel {
 
 
 class ServiceThread::Impl final {
 class ServiceThread::Impl final {
 public:
 public:
-    explicit Impl(KernelCore& kernel);
+    explicit Impl(KernelCore& kernel, std::size_t num_threads);
     ~Impl();
     ~Impl();
 
 
     void QueueSyncRequest(ServerSession& session, std::shared_ptr<HLERequestContext>&& context);
     void QueueSyncRequest(ServerSession& session, std::shared_ptr<HLERequestContext>&& context);
@@ -35,9 +35,8 @@ private:
     bool stop{};
     bool stop{};
 };
 };
 
 
-ServiceThread::Impl::Impl(KernelCore& kernel) {
-    constexpr std::size_t SizeOfPool{1};
-    for (std::size_t i = 0; i < SizeOfPool; ++i)
+ServiceThread::Impl::Impl(KernelCore& kernel, std::size_t num_threads) {
+    for (std::size_t i = 0; i < num_threads; ++i)
         threads.emplace_back([&] {
         threads.emplace_back([&] {
             // Wait for first request before trying to acquire a render context
             // Wait for first request before trying to acquire a render context
             {
             {
@@ -88,7 +87,8 @@ ServiceThread::Impl::~Impl() {
     }
     }
 }
 }
 
 
-ServiceThread::ServiceThread(KernelCore& kernel) : impl{std::make_unique<Impl>(kernel)} {}
+ServiceThread::ServiceThread(KernelCore& kernel, std::size_t num_threads)
+    : impl{std::make_unique<Impl>(kernel, num_threads)} {}
 
 
 ServiceThread::~ServiceThread() = default;
 ServiceThread::~ServiceThread() = default;
 
 

+ 1 - 1
src/core/hle/kernel/service_thread.h

@@ -14,7 +14,7 @@ class ServerSession;
 
 
 class ServiceThread final {
 class ServiceThread final {
 public:
 public:
-    explicit ServiceThread(KernelCore& kernel);
+    explicit ServiceThread(KernelCore& kernel, std::size_t num_threads);
     ~ServiceThread();
     ~ServiceThread();
 
 
     void QueueSyncRequest(ServerSession& session, std::shared_ptr<HLERequestContext>&& context);
     void QueueSyncRequest(ServerSession& session, std::shared_ptr<HLERequestContext>&& context);