sched_setscheduler()函數

來源:互聯網
上載者:User

sched_setscheduler()函數用以修改線程的調度策略以及調度參數。 一 函數原型

 #include <sched.h>int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param);
二 參數說明

  pid:表示要修改/設定調度參數的目標線程,如果傳入的參數pid為0則目標線程是調用該函數的線程;

  policy: 表示目標線程的調度策略。目前linux對於sched_setscheduler()函數支援如下調度策略:

    1) SCHED_OTHER   標準的CFS調度策略;
    2) SCHED_BATCH   針對"batch" 類型的任務,切換沒有SCHED_OTHER頻繁;
    3) SCHED_IDLE    適用於以低優先順序啟動並執行背景工作。

  上面三個任務都屬於普通調度策略(非real-time調度策略),且採用上面三個policy其中一種時,第三個參數param->sched_priority必須設定為0,否則運行時會調用失敗。

    4) SCHED_FIFO    FIFO方式的即時調度策略;

    5) SCHED_RR      輪轉方式的即時調度策略。

  對於響應或者延遲有要求的任務可以通過SCHED_FIFO和SCHED_RR設定為即時調度策略。

  param: 它是一個如下的結構指標類型

struct sched_param {    ...    int sched_priority;    ...};

  Param->sched_priority用以指定目標線程的優先順序,這也是sched_setscheduler()函數對於param比較普遍的用法。

傳回值:

  函數調用成功時返回0;而失敗或者出錯時返回-1,並設定errno值。下面是失敗時,設定不同errno的情況:

  EINVAL: 無效參數。Pid小於0或者param 為 NULL;
  EINVAL: 參數policy 不是上面提到的幾種,無法識別;
  EINVAL: 參數param(或者param結構中的值)對於指定的policy無意義;
  EPERM : 函數調用者沒有許可權;
  ESRCH : 傳入的pid不存在。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.