Browse Source
Merge pull request #1036 from lioncash/thread
scheduler: Make HaveReadyThreads() a const member function
pull/15/merge
bunnei
7 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
7 additions and
7 deletions
-
src/common/thread_queue_list.h
-
src/core/hle/kernel/scheduler.cpp
-
src/core/hle/kernel/scheduler.h
|
|
|
@ -16,7 +16,7 @@ struct ThreadQueueList { |
|
|
|
// (dynamically resizable) circular buffers to remove their overhead when |
|
|
|
// inserting and popping. |
|
|
|
|
|
|
|
typedef unsigned int Priority; |
|
|
|
using Priority = unsigned int; |
|
|
|
|
|
|
|
// Number of priority levels. (Valid levels are [0..NUM_QUEUES).) |
|
|
|
static const Priority NUM_QUEUES = N; |
|
|
|
@ -26,9 +26,9 @@ struct ThreadQueueList { |
|
|
|
} |
|
|
|
|
|
|
|
// Only for debugging, returns priority level. |
|
|
|
Priority contains(const T& uid) { |
|
|
|
Priority contains(const T& uid) const { |
|
|
|
for (Priority i = 0; i < NUM_QUEUES; ++i) { |
|
|
|
Queue& cur = queues[i]; |
|
|
|
const Queue& cur = queues[i]; |
|
|
|
if (std::find(cur.data.cbegin(), cur.data.cend(), uid) != cur.data.cend()) { |
|
|
|
return i; |
|
|
|
} |
|
|
|
@ -37,8 +37,8 @@ struct ThreadQueueList { |
|
|
|
return -1; |
|
|
|
} |
|
|
|
|
|
|
|
T get_first() { |
|
|
|
Queue* cur = first; |
|
|
|
T get_first() const { |
|
|
|
const Queue* cur = first; |
|
|
|
while (cur != nullptr) { |
|
|
|
if (!cur->data.empty()) { |
|
|
|
return cur->data.front(); |
|
|
|
|
|
|
|
@ -25,7 +25,7 @@ Scheduler::~Scheduler() { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
bool Scheduler::HaveReadyThreads() { |
|
|
|
bool Scheduler::HaveReadyThreads() const { |
|
|
|
std::lock_guard<std::mutex> lock(scheduler_mutex); |
|
|
|
return ready_queue.get_first() != nullptr; |
|
|
|
} |
|
|
|
|
|
|
|
@ -21,7 +21,7 @@ public: |
|
|
|
~Scheduler(); |
|
|
|
|
|
|
|
/// Returns whether there are any threads that are ready to run. |
|
|
|
bool HaveReadyThreads(); |
|
|
|
bool HaveReadyThreads() const; |
|
|
|
|
|
|
|
/// Reschedules to the next available thread (call after current thread is suspended) |
|
|
|
void Reschedule(); |
|
|
|
|