comp.lang.ada
 help / color / mirror / Atom feed
* tasksing and TCP sockets
@ 2006-01-30 22:12 Rolf
  2006-01-31  2:40 ` Stephen Leake
                   ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Rolf @ 2006-01-30 22:12 UTC (permalink / raw)


Consider an application that communicates with its environment via
sensors and actors. For testing purposes the low level access to the
sensor and actor data gets replaced by a TCP socket communication whose
other end simulates the world, i.e. the world simulation continuously
writes sensor data to the socket and accepts commands as actor data.

  +-----------------------+
  |                       |
  | application           |
  |                       |
  +-----------------------+
  |    h/w abstraction    |
  |  sensors  |  actors   |
  +-----------------------+
             |
         TCP client
             |
             |
             |
  TCP server that simulates the world


In a stripped down version I can succesfully connect to the server
(using GNAT.Sockets) and either read the sensor data *or* write actor
data. The program is currently split in two tasks. One tasks contains
the application code and the actor communication (using
type_id'output(channel)). The second tasks gets started during program
initialisation. It reads the data from the socket via
type_id'input(channel) and provides the data to the application through
a protected object.

The problem that I face is that the second task seems to starve the
first one. As soon as it is active, the application does not generate
debug output anymore.

Some background info: gcc-3.4.4 on Windows XP. Java for the world
simulation. The simulator sends about 20 packages à 11bytes every
100ms. The application sends typically 2-3 packages per second. I have
delay statements in both main loops (varied between 0.0 and 0.2
seconds).

My questions:
 - is that a reasonable tasking approach?
 - I don't know much about sockets (or better I don't remember much).
Does a waiting read (in the second task) block a write in the first
task?
 - how can I interrupt the waiting read task to force activity in the
main task?
 - what other hints can you give me?


TIA
   Rolf




^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2006-02-06  5:02 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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

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