Windowsでは次のことができます:
HANDLE hCurrentProcess = GetCurrentProcess();
SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);
*nixで同じことを行うにはどうすればよいですか?
Windowsでは次のことができます:
HANDLE hCurrentProcess = GetCurrentProcess();
SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);
*nixで同じことを行うにはどうすればよいですか?
試す:
#include <sys/time.h>
#include <sys/resource.h>
int main(){
setpriority(PRIO_PROCESS, 0, -20);
}
これが機能するには、スーパーユーザーとして実行している必要があることに注意してください。
(詳細については、プロンプトで「man setpriority」と入力してください。)
UNIXでこのようなことをする場合は、(ルートとして)chmodを実行して、タスクを実行し、sビットを設定します。次に、実行時に実行者、優先順位、スレッドのスケジューリングなどを変更できます。
バグのある大規模なマルチスレッドアプリを作成していない限り、48 CPUボックスを引き継ぎ、すべてのスレッドがSHED_FIFOに設定された状態で各CPUが100%回転しているため、誰もシャットダウンできません。完了まで実行)rootとして実行。
いや..私は経験から話をしていません...。
@アラン
スーパーユーザーにならずに、自分のプロセスの優先度を下げることはできますか?
もちろん。ただし、一方通行ですのでご注意ください。出発点に戻ることさえできません。また、システムに大きな負荷がかかっている場合は、優先順位を少し下げるだけでも、実行時間に驚くほど大きな影響を与える可能性があります。