🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: ch.comp.os.linux
Article #18631

Re: programmierfrage: free-pascal

#18631
From: Nicolas Iselin
Date: Mon, 06 Mar 2000 00:00
46 lines
2282 bytes
Roger Kalt wrote:
> 
> hallo zusamen
> 
> wie programmiert man in free-pascal ein programm, das immer im
> hintergrund l�uft, und ab und zu mal die serielle schnittstelle abfragt
> , also im grunde genommen die meisste zeit nichts tut,
> aber es soll nicht gerade die ganze cpu zeit brauchen ????
> wenn ich nur ein einfaches progr�mmchen ausprobiere, welches das
> keyboard abfragt, also auch nichts wildes tut, so braucht es gerade 100%
> cpu zeit.

Meine Kenntnisse in free-pascal sind 0, und pascal ist auch schon
lange her. Dein Problem ist aber nicht pascal-spezifisch. Das Problem
heisst 'synchronisierung' (In den Beispielen verwende ich PSEUDO-Code,
nicht mit Pascal verwechseln):

Variante a)
while (not keypressed) 
  nop();

Ganz schlecht, der loop geht so schnell wie m�glich (d.h. braucht
s�mtliche CPU-Zeit) immer wieder den Tastaturbuffer abfragen.

Variante b)
while (not keypressed)
  sleep(n);

Etwas besser, immerhin schickt man den Prozess schlafen, wenn 
noch nichts da war. Aber immer noch ein busy wait. Und das Tuning
ist sehr m�hsam und uU sogar maschinenabhaengig: Je groesser n,
desto weniger CPU-Zeit wird verbraten, daf�r steigt auch die
Reaktionszeit deines Programms.

Variante c)
(Kein Pseudocode)

Interrupt-gesteuerte Programmierung: Man programmiert eine 
Interrupt Service Routine und installiert diese. Mindestens
OS wenn nicht auch maschinenabhaengig. Dafuer wird nur CPU-Zeit
benoetigt, wenn auch was kommt. Ist aber nichts fuer Programmier-
Anfaenger...

Ich wuerde versuchen, mehr ueber Variante c) herauszufinden.

Nicolas
Technical Details
Message-ID: <38C3896F.207E8E65@iselin.ch>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <38C2D1DA.CDA22BE0@gmx.net>

Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII
X-Google-Thread: f4b73,6ac6d88e6d5a0b6a
X-Google-Attributes: gidf4b73,public
From: Nicolas Iselin <nicolas@iselin.ch>
Subject: Re: programmierfrage: free-pascal
Date: 2000/03/06
Message-ID: <38C3896F.207E8E65@iselin.ch>
X-Deja-AN: 593747376
Content-Transfer-Encoding: 8bit
References: <38C2D1DA.CDA22BE0@gmx.net>
Content-Type: text/plain; charset=iso-8859-1
X-Complaints-To: news@ip-plus.net
X-Trace: pollux.ip-plus.net 952338787 11888 195.65.132.230 (6 Mar 2000 10:33:07 GMT)
Organization: my own private family ;-)
Mime-Version: 1.0
NNTP-Posting-Date: 6 Mar 2000 10:33:07 GMT
Newsgroups: ch.comp.os.linux