• Node.js Video Tutorials

Node.js - os.setPriority() 方法



Node.js 的 os.setPriority() 方法 允許設定由程序 ID (pid) 指定的程序的排程優先順序。

優先順序是一個整數,指定我們想要設定的程序排程優先順序。輸入優先順序必須介於 -20(高優先順序)到 19(低優先順序)之間。

由於 POSIX 系統的優先順序級別與 Windows 系統 的優先順序級別不同,Node.js 為我們提供了具有不同優先順序級別的常量,用於程序,它們位於 os.constants.priority 常量中。在 Windows 上將程序優先順序設定為 PRIORITY_HIGHEST 需要提升的許可權。如果執行程式的使用者沒有許可權,則它將降低到 PRIORITY_HIGH。

語法

以下是 Node.js os.setPriority() 方法 的語法 -

os.setPriority([pid, ] priority)

引數

  • pid - (可選)這是程序 ID,一個整數,標識應設定其優先順序的正在執行的程序。預設值為 0。這是一個可選引數。

  • priority - (必填)第二個引數是優先順序,一個整數,表示我們希望設定的程序排程優先順序。範圍從 -20(最高優先順序)到 19(最低優先順序)。這是一個必填引數。

返回值

此方法不返回任何內容,而是設定由 pid 指定的程序的排程優先順序。

以下是 Node.js 提供的優先順序常量 -

  • PRIORITY_LOW - 這是最低的程序排程優先順序。在 Windows 上,這對應於 IDLE PRIORITY CLASS,在所有其他平臺上,它的 nice 值為 19。

  • PRIORITY_BELOW_NORMAL - 在 Windows 上,這對應於 BELOW_NORMAL_PRIORITY_CLASS,在所有其他平臺上,它的 nice 值為 10。

  • PRIORITY_NORMAL - 這是預設的程序排程優先順序,它對應於 Windows 上的 NORMAL_PRIORITY_CLASS。在所有其他平臺上,0 是 nice 值。

  • PRIORITY_ABOVE_NORMAL - 這對應於 Windows 上的 ABOVE_NORMAL_PRIORITY_CLASS,在所有其他平臺上,它的 nice 值為 -7。

  • PRIORITY_HIGH - 在 Windows 上,這對應於 HIGH_PRIORITY_CLASS,在所有其他平臺上,它的 nice 值為 -14。

  • PRIORITY_HIGHEST - 這是最高的程序排程優先順序,它對應於 Windows 上的 REALTIME_PRIORITY_CLASS。在所有其他平臺上,-20 是 nice 值。

示例

在以下示例中,我們嘗試將當前程序的優先順序設定為 0。

const os = require('os');
os.setPriority(0);
console.log(os.getPriority());

輸出

/home/cg/root/63a002c52763b/main.js:3
os.setPriority(0);
   ^

TypeError: os.setPriority is not a function
   at Object.<anonymous> (/home/cg/root/63a002c52763b/main.js:3:4)
   at Module._compile (internal/modules/cjs/loader.js:702:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
   at Module.load (internal/modules/cjs/loader.js:612:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
   at Function.Module._load (internal/modules/cjs/loader.js:543:3)
   at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
   at startup (internal/bootstrap/node.js:238:19)
   at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)

注意 - 要獲得準確的結果,最好在本地執行以上程式碼。

執行以上程式後,setPriority() 方法將當前程序的優先順序設定為 0。由於 setPriority() 不返回任何內容,因此我們記錄了 getPriority() 方法,它列印當前程序的優先順序。

0

示例

在下面的示例中,我們嘗試將當前程序的優先順序設定為 19。

const os = require('os');
os.setPriority(19);
console.log(os.getPriority());

錯誤

home/cg/root/63a002c52763b/main.js:3
os.setPriority(19);
   ^

TypeError: os.setPriority is not a function
   at Object.<anonymous> (/home/cg/root/63a002c52763b/main.js:3:4)
   at Module._compile (internal/modules/cjs/loader.js:702:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
   at Module.load (internal/modules/cjs/loader.js:612:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
   at Function.Module._load (internal/modules/cjs/loader.js:543:3)
   at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
   at startup (internal/bootstrap/node.js:238:19)
   at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)

注意 - 要獲得準確的結果,最好在本地執行以上程式碼。

執行以上程式後,19 設定為 pid 的排程優先順序。然後 . getPriority() 方法 列印當前程序的排程優先順序。

19

示例

注意 - 如果執行程式的使用者沒有許可權,則它將降低到 PRIORITY_HIGH。

在以下示例中,我們使用 setPriority() 方法 將當前程序的優先順序設定為 -20。

const os = require('os');
os.setPriority(-20);
console.log(os.getPriority());

錯誤

/home/cg/root/63a002c52763b/main.js:3
os.setPriority(-20);
   ^

TypeError: os.setPriority is not a function
   at Object.<anonymous> (/home/cg/root/63a002c52763b/main.js:3:4)
   at Module._compile (internal/modules/cjs/loader.js:702:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
   at Module.load (internal/modules/cjs/loader.js:612:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
   at Function.Module._load (internal/modules/cjs/loader.js:543:3)
   at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
   at startup (internal/bootstrap/node.js:238:19)
   at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)

注意 - 要獲得準確的結果,最好在本地執行以上程式碼。

執行以上程式後,執行以上程式的使用者沒有許可權,它會緩慢降低到 PRIORITY_HIGH (-14)。

-14
nodejs_os_module.htm
廣告