Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ pthread_setscheduler(3-thr) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

pthread_setscheduler(3-thr)                     pthread_setscheduler(3-thr)

NAME
     pthreadsetscheduler - Aktuelle Scheduling-Strategie und Priorität
     eines Thread ändern

SYNTAX
     #include <pthread.h>

     int pthreadsetscheduler(
          pthreadt thread,
          int scheduler,
          int priority);

PARAMETER
     thread      Thread, dessen Scheduling-Strategie geändert werden soll.

     scheduler   Neuer Wert für die Scheduling-Strategie des in thread
                 angegebenen Thread. Gültige Werte sind:

                 SCHEDFIFO
                      (First In, First Out) Der Thread mit der höchsten
                      Priorität wird so lange ausgeführt, bis er blockiert
                      wird. Wenn mehrere Threads mit gleicher Priorität
                      vorliegen, und es sich hierbei um die höchste Priori-
                      tät unter den einzelnen Threads handelt, läuft der
                      zuerst ausgeführte Thread so lange weiter, bis er
                      blockiert wird..

                 SCHEDRR
                      (Round Robin - zyklische Weiterschaltung) Der Thread
                      mit der höchsten Priorität wird so lange ausgeführt,
                      bis er blockiert wird; Threads mit gleicher Priori-
                      tät, falls es sich hierbei um die höchste Priorität
                      unter den einzelnen Threads handelt, werden aller-
                      dings Zeitscheiben zugeteilt. Dies ist ein Prozeß,
                      bei dem den Threads die verfügbaren Prozessoren
                      abwechselnd zur Verfügung gestellt werden.

                 SCHEDOTHER
                      (Standard) Die Zeitscheiben sind über alle Threads
                      verteilt. Mit SCHEDOTHER wird sichergestellt, daß
                      allen Threads, unabhängig von der Priorität, Zeit-
                      scheiben zugeteilt werden, so daß kein Thread gänz-
                      lich von der Ausführung ausgeschlossen ist. (Aller-
                      dings kann die Ausführung von SCHEDOTHER-Threads
                      durch SCHEDFIFO- oder SCHEDRR-Threads verhindert
                      werden.)

                 SCHEDFGNP
                      (Foreground - Vordergrund) Wie SCHEDOTHER. Den
                      Threads sind Zeitscheiben zugeteilt und Prioritäten
                      können dynamisch durch den Scheduler geändert werden,
                      um Ausgeglichenheit (Fairness) zu gewährleisten.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

pthread_setscheduler(3-thr)                     pthread_setscheduler(3-thr)

                 SCHEDBGNP
                      (Background - Hintergrund) Hiermit wird sicherge-
                      stellt, daß auf alle Threads unabhängig von der Prio-
                      rität Zeitscheiben verteilt werden. Allerdings kann
                      die Ausführung von SCHEDBGNP-Threads durch eine der
                      anderen Strategien verhindert werden.

     priority    Neuer Prioritätswert des in thread angegebenen Thread. Das
                 Prioritätsattribut hängt von der Scheduling-Strategie ab.
                 Gültige Werte liegen innerhalb der folgenden Bereiche:

                 PRIOTHERMIN <= priority <= PRIOTHERMAX

                 PRIFIFOMIN <= priority <= PRIFIFOMAX

                 PRIRRMIN <= priority <= PRIRRMAX

                 PRIFGMINNP <= priority <= PRIFGMAXNP

                 PRIBGMINNP <= priority <= PRIBGMAXNP

     Wenn Sie einen neuen Thread erstellen, ohne ein Objekt für die
     Thread-Attribute mit einem geänderten Prioritätsattribut anzugeben,
     liegt die Standardpriorität für den neu erstellten Thread in der Mitte
     zwischen PRIOTHERMIN und PRIOTHERMAX (die Mitte zwischen Minimum
     und Maximum für die Strategie SCHEDOTHER).

     Wenn Sie diese Routine zur Angabe einer Mindestpriorität oder einer
     maximalen Priorität aufrufen, verwenden Sie hierzu das entsprechende
     Symbol; zum Beispiel PRIFIFOMIN oder PRIFIFOMAX. Verwenden Sie zur
     Angabe eines Werts zwischen Minimum und Maximum einen entsprechenden
     arithmetischen Ausdruck. Wenn Sie beispielsweise eine Priorität in der
     Mitte zwischen Minimum und Maximum für die Scheduling-Strategie für
     zyklische Weiterschaltung (Round Robin) angeben wollen, geben Sie in
     der Syntax Ihrer Programmiersprache folgendes Konzept an:

          prirrmid = (PRIRRMIN + PRIRRMAX)/2

     Ergibt sich aus dem Ausdruck ein Wert, der außerhalb des Bereichs zwi-
     schen Minimum und Maximum liegt, führt dies bei Verwendung des Aus-
     drucks zu einem Fehler.

BESCHREIBUNG
     Die Routine pthreadsetscheduler() ändert die aktuelle Scheduling-
     Strategie und Priorität eines Thread. Rufen Sie diese Routine auf,
     wenn Sie die Priorität zusammen mit der Scheduling-Strategie eines
     Thread ändern wollen. Soll nur die Priorität geändert werden, verwen-
     den Sie die Routine pthreadsetprio().






Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

pthread_setscheduler(3-thr)                     pthread_setscheduler(3-thr)

     Ein Thread ändert seine eigene Scheduling-Strategie und Priorität über
     die durch pthreadself() zurückgegebene ID. Die Änderung der
     Scheduling-Strategie und/oder Priorität eines Thread kann zur Folge
     haben, daß dieser ausgeführt oder durch einen anderen Thread abgelöst
     wird.

     Diese Routine unterscheidet sich von den Routinen
     pthreadattrsetprio() und pthreadattrsetsched(), die die Attribute
     für Priorität und Scheduling-Strategie setzen, über die die Priorität
     und Scheduling-Strategie eines neuen Thread während seiner Erstellung
     eingerichtet werden. Die vorliegende Routine dagegen ändert die Prio-
     rität und Scheduling-Strategie eines vorhandenen Thread.

RÜCKGABEWERTE
     Bei erfolgreicher Ausführung gibt diese Routine den Wert der vorher-
     igen Scheduling-Strategie zurück. Wenn die Funktion fehlschlägt, kann
     errno auf einen der folgenden Werte gesetzt werden:

     EINVAL    Der durch thread angegebene Wert ist ungültig.

     ENOTSUP   Es wird versucht, die Strategie auf einen nicht unterstütz-
               ten Wert zu setzen.

     ESRCH     Der durch thread angegebene Wert verweist nicht auf einen
               vorhandenen Thread.

     EPERM     Der Aufrufer verfügt nicht über die Berechtigungen, die zum
               Setzen der Scheduling-Strategie für den angegebenen Thread
               erforderlich sind.

SIEHE AUCH
     pthreadattrsetprio(3-thr), pthreadattrsetsched(3-thr),
     pthreadcreate(3-thr), pthreadself(3-thr), pthreadsetprio(3-thr).





















Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026