[archimedes] Re: Wie richtig auf Reason-Codes reagieren?

  • From: Carlos Michael Santillan <ml-archimedes@xxxxxxxxxx>
  • To: archimedes@xxxxxxxxxxxxx
  • Date: Sun, 19 Oct 2014 20:07:56 +0200

On 19 Oct 2014  "Anton Reiser" <anton-reiser@xxxxxxxxxxx> wrote:
>Beim User-Drag Teile des Fensters neu zeichnen oder ggf. je nach
>Position den Pointer ändern geht doch nur interaktiv bei aktiviertem
>Null-Event oder Wimp_PollIdle mit ganz kurzen Intervallen.

RISC OS erkennt das das Fenster oder eine Teil davon neu gezeichnet
werden muss und schickt Redraw_Window an Wimp_Poll und dann kann im
Programm das Fenster oder ein Teil davon neugezeichnet werden. In der
Regel macht man das dann via Wimp_RedrawWindow und
Wimp_GetRectangle. Aber sicher gibt es auch Ausnahmen. Wenn ich mich
richtig erinnere macht das aber RISC OS eh selbst und die paar Zeilen
sind entweder historisch oder zur Sicherheit.

RISC OS hat kooperatives Multitasking. Mal angenommen es gibt zwei
Programme die laufen und beide brauchen einige Minuten um ihr Werk zu
vollenden. Das erste Programm gibt nach einiger Zeit die CPU frei und
wartet über die Wimp_Poll mit dem Ereignis Null Reason darauf weiter zu
arbeiten zu können. RISC OS übergibt nun dem anderen Programm die CPU.
Nach einiger Zeit gibt auch dieses Programm die CPU frei und wartet, so
wie das erste Programm, auf die CPU. So geht das hin und her bis die
Programme fertig sind. Real sind natürlich viele Programme beteiligt.
Der Desktop, der Filer usw. wollen ja auch bedient werden und das nennt
man dann Multitasking. Also die quasi gleichzeitige Abarbeitung von
mehreren Programmen. Hier bestimmen die Programme selbst wann sie, wenn
überhaupt :-(, die CPU freigeben für die anderen Programme.

Bei preemptiven Multitasking, wie bei Linux, Mac OS oder Windows,
steuert das Betriebssystem die Verteilung und entzieht den
aktiven Programmen die Rechenzeit um ein anderes Programm die CPU zu
geben. Das mit den vielen CPUs/Kernen ist hier natürlich aussen vor.

Der Null-Event ist also eigentlich ein "Du kannst weitermachen".
Natürlich könnte man bei jeden Null-Event das Fenster neuzeichen, das
ist aber reine Verschwendung. RISC OS sagt einen schon wenn es notwendig
ist und das klapt ja auch gut. Null-Events sollte man grundsätzlich
vermeiden und möglichst nur nutzen um die Arbeit fortzusetzen. Natürlich
gibt es auch Ausnahmen.

Mit Tools wie TaskUsage kann man Programme die unötigerweise Null Reason
benutzen erkennen. Das sind dann die Programme die einen langen Balken
haben obwohl die untätig sind.

Mit Wimp_PollIdle wird RISC OS nur mitgeteilt, wann man wieder die
Kontrole haben möchte. Ansonsten ist es ein Wimp_Poll. Programme die im
Hintergrund auf etwas warten oder von Zeit zu Zeit etwas machen sollen,
ist Wimp_PollIdle die Wahl.



Carlos Michael Santillán

--
http://www.arcsite.de/
http://www.risc-os.de/

Ein Staat, in dem alle verdächtig sind, ist selbst verdächtig
A state that suspects everyone is itself suspicious

Other related posts: