13

Windowsでは次のことができます:

HANDLE hCurrentProcess = GetCurrentProcess();

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);

*nixで同じことを行うにはどうすればよいですか?

4

3 に答える 3

24

試す:

#include <sys/time.h>
#include <sys/resource.h>

int main(){
    setpriority(PRIO_PROCESS, 0, -20);
}

これが機能するには、スーパーユーザーとして実行している必要があることに注意してください。

(詳細については、プロンプトで「man setpriority」と入力してください。)

于 2008-08-27T06:20:54.843 に答える
5

UNIXでこのようなことをする場合は、(ルートとして)chmodを実行して、タスクを実行し、sビットを設定します。次に、実行時に実行者、優先順位、スレッドのスケジューリングなどを変更できます。

バグのある大規模なマルチスレッドアプリを作成していない限り、48 CPUボックスを引き継ぎ、すべてのスレッドがSHED_FIFOに設定された状態で各CPUが100%回転しているため、誰もシャットダウンできません。完了まで実行)rootとして実行。

いや..私は経験から話をしていません...。

于 2008-09-12T23:35:07.937 に答える
2

@アラン

スーパーユーザーにならずに、自分のプロセスの優先度を下げることはできますか?

もちろん。ただし、一方通行ですのでご注意ください。出発点に戻ることさえできません。また、システムに大きな負荷がかかっている場合は、優先順位を少し下げるだけでも、実行時間に驚くほど大きな影響を与える可能性があります。

于 2008-08-27T17:48:31.587 に答える