From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,136c120daac2a1 X-Google-Attributes: gid103376,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news2.google.com!news4.google.com!newsfeed.stanford.edu!newsfeed.berkeley.edu!ucberkeley!nntp.abs.net!news.abs.net!not-for-mail Newsgroups: comp.lang.ada Subject: Re: tasksing and TCP sockets References: <1138748598.084128.58760@o13g2000cwo.googlegroups.com> <1138779556.310888.211970@g47g2000cwa.googlegroups.com> <1138998783.941745.74440@g14g2000cwa.googlegroups.com> From: Stephen Leake Message-ID: User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (windows-nt) Cancel-Lock: sha1:vINpnmBXVsxsjRtI69a4GIsDPJs= MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sat, 04 Feb 2006 07:48:14 -0500 NNTP-Posting-Host: 66.159.65.1 X-Complaints-To: abuse@toad.net X-Trace: news.abs.net 1139057298 66.159.65.1 (Sat, 04 Feb 2006 07:48:18 EST) NNTP-Posting-Date: Sat, 04 Feb 2006 07:48:18 EST Xref: g2news1.google.com comp.lang.ada:2773 Date: 2006-02-04T07:48:14-05:00 List-Id: "Rolf" writes: > Stephen Leake wrote: >> "Rolf" writes: >> >> > The main program essentially looks like this: >> > >> > loop >> > Read_Sens; >> > >> > Behave; >> > >> > delay until Next; >> > Next := Next + Period; -- Period == 0.1 sec typ. >> > end loop; >> >> Ok. So Read_Sens runs the h/w abstraction layer, Behave is the >> application layer. > > More or less. Behave also calls a write routine in the abstraction > layer. Ah. That's how it "changes the world". Ok. >> > The world simulation program at the other end of the TCP socket does >> > not know about the internal timing of the application (perhaps I should >> > add a synchronization protocol, now that I think of it) >> >> I'm still not clear where the sockets are. I think Read_Sens reads >> from a socket to get the simulated sensor values. Does it try to read >> data for all variables from the socket _every_ time it is called? Or >> does it check to see if some new data is available? > > Read_Sens reads the hardware sensors in the non-simulated case and > writes them to global variables. It reads them from a protected object > when communicating via TCP. The second task (besides the main program) > continuously reads from the socket and writes to the protected object. "continously" is a dangerous term; that's 100% CPU? I assume this is where the "delay" comes in, and this is actually "periodically". > That second task and the protected object do not exist in the > non-simulated case. > >> Behave writes to a socket for user display? > > and it changes the world in the world simulation. The world simulation > also has a GUI. Ok. >> Then the question is what drives the simulation; does it wait for >> Read_Sens to read data, or just run at some rate? Does the simulation >> react to anything Behave does? >> >> Yes, you need synchronization between the simulation and Read_Sens, >> and possibly Behave. That is probably the root cause of your problem. > > that is certainly true and I have to think about it again. > > No, the root cause of my problem was a buggy socket implementation in > gcc-3.4.4 (at least I think so). I recompiled my program with GNAT GPL > 2005 and it worked without any other modification Ah. Good that it works now. -- -- Stephe