在 C++ 中,可以使用 std::thread
類來創(chuàng)建和管理線程。但是,std::thread
類本身并不提供直接設(shè)置線程優(yōu)先級的方法。要設(shè)置線程優(yōu)先級,需要使用操作系統(tǒng)相關(guān)的 API。
以下是一個示例,展示了如何在 Linux 和 Windows 平臺上設(shè)置線程優(yōu)先級:
#include<iostream>
#include<thread>
#include<chrono>
#ifdef _WIN32
#include<windows.h>
#else
#include <pthread.h>
#include <sched.h>
#endif
void set_thread_priority(std::thread& thread, int priority) {
auto native_handle = thread.native_handle();
#ifdef _WIN32
// Windows 平臺
SetThreadPriority(native_handle, priority);
#else
// Linux 平臺
sched_param sch;
int policy;
pthread_getschedparam(native_handle, &policy, &sch);
sch.sched_priority = priority;
pthread_setschedparam(native_handle, policy, &sch);
#endif
}
void thread_function() {
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "Thread finished"<< std::endl;
}
int main() {
std::thread my_thread(thread_function);
// 設(shè)置線程優(yōu)先級
#ifdef _WIN32
set_thread_priority(my_thread, THREAD_PRIORITY_HIGHEST);
#else
set_thread_priority(my_thread, 90);
#endif
my_thread.join();
return 0;
}
在這個示例中,我們定義了一個名為 set_thread_priority
的函數(shù),該函數(shù)接受一個 std::thread
對象和一個表示優(yōu)先級的整數(shù)。然后,根據(jù)當(dāng)前平臺(Windows 或 Linux),我們使用相應(yīng)的 API 設(shè)置線程優(yōu)先級。
請注意,這個示例僅適用于 Linux 和 Windows 平臺。在其他平臺上,您可能需要使用不同的 API 來設(shè)置線程優(yōu)先級。此外,線程優(yōu)先級的具體值和行為可能因操作系統(tǒng)而異,因此在設(shè)置優(yōu)先級時要謹(jǐn)慎。