comp.lang.ada
 help / color / mirror / Atom feed
From: Stephen Leake <stephen_leake@acm.org>
Subject: Re: tasksing and TCP sockets
Date: Sat, 04 Feb 2006 07:48:14 -0500
Date: 2006-02-04T07:48:14-05:00	[thread overview]
Message-ID: <u7j8bjnn5.fsf@acm.org> (raw)
In-Reply-To: 1138998783.941745.74440@g14g2000cwa.googlegroups.com

"Rolf" <rolf.ebert_nospam_@gmx.net> writes:

> Stephen Leake wrote:
>> "Rolf" <rolf.ebert_nospam_@gmx.net> 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



  reply	other threads:[~2006-02-04 12:48 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-01-30 22:12 tasksing and TCP sockets Rolf
2006-01-31  2:40 ` Stephen Leake
2006-01-31  6:59   ` tmoran
2006-01-31 23:03     ` Rolf
2006-02-01  1:26       ` Stephen Leake
2006-02-01  7:39         ` Rolf
2006-02-01 14:52           ` Stephen Leake
2006-02-03 20:33             ` Rolf
2006-02-04 12:48               ` Stephen Leake [this message]
2006-02-06  5:02     ` Dave Thompson
2006-01-31 22:52   ` Rolf
2006-02-01  1:23     ` Stephen Leake
2006-02-01 21:12       ` Simon Wright
2006-01-31  3:02 ` Steve
2006-01-31 10:09 ` Dmitry A. Kazakov
2006-01-31 21:55   ` Simon Wright
2006-02-01  8:54     ` Dmitry A. Kazakov
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox