•  Back 
  •  Threads in MagiC 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File11.18.1  Threads und Signale                                       TOS

Beim Zusammenspiel von Threads und Signalen ist folgendes zu beachten: 
wird ein Prozess (z.B. per SIGSTOP) angehalten, so werden auch alle 
zugehörigen Threads angehalten; durch das SIGCONT-Signal können alle 
Threads wieder aufgeweckt werden. Falls ein Prozess per SIGTERM oder 
SIGKILL beendet wird, werden auch alle betroffenen Threads automatisch 
terminiert.

Die Signalbehandlung wird immer nur vom Haupt-Thread übernommen; dies 
ist derjenige, der mit Pexec gestartet worden ist. Während der 
Abarbeitung eines Signalhandlers wird deshalb auch nur der Haupt- 
Thread angehalten, und bei einem Aufruf von Psigreturn in diesen 
zurückgesprungen.

Achtung: Falls mehr als ein Thread die Signalmaske manipuliert, kann 
es zu Unstimmigkeiten kommen, falls die Maske nicht in der richtigen 
Reihenfolge wieder zurückgesetzt wird. Beispiel:

Thread-A rettet alte Maske
Thread-A ändert Maske
Thread-B rettet alte Maske
Thread-A restauriert alte Maske
Thread-B restauriert alte Maske

In diesem Fall wird die Signalmaske ungewollt verändert. Eine Lösung 
dieses Problems besteht darin, jedem Thread eine eigene Signalmaske 
zuzuteilen, und als effektive Signalmaske die Masken aller Threads 
durch eine Oder-Verknüpfung zu verbinden. Möglicherweise wird das in 
einer späteren Version von MagiC tatsächlich der Fall sein.

Querverweis: Threads in MagiC   Signale   shel_write 
Prozessfunktionen