comp.lang.ada
 help / color / mirror / Atom feed
From: Victor Porton <porton@narod.ru>
Subject: Protected hash map (efficient programming with a protected type)
Date: Thu, 16 Nov 2017 22:42:38 +0200
Date: 2017-11-16T22:42:38+02:00	[thread overview]
Message-ID: <oukt7t$1ifn$1@gioia.aioe.org> (raw)

Process_Descriptor record consists of a process ID (an integer), two file 
descriptors (for stdin and stdout). Process descriptors may also contain two 
strings: program input string (formed before the program started) and 
program output string (which is appended every time we get some output from 
the program). It may contain more data.

Process descriptors are organized into a hash map from a Unix process ID 
into a project descriptor.

Sometimes we receive Unix signal SIGCHLD what is configured to call a 
protected procedure (of a protected object). This protected procedure should 
remove the process descriptor from the map.

Now I don't understand how to organize access to the map.

First, copying process descriptors should be avoided because the stdout 
string may be long and occupy a significant amount of memory. Thus I want to 
use accesses to process descriptors rather than descriptor itself.

But in this case, an access value may become dangling if SIGCHILD handler 
procedure is run in the middle and its use become erroneous.

What to do?

Note that my program is single-threaded.

I write some important open source programs for the benefit for the World. 
Please help me.

-- 
Victor Porton - http://portonvictor.org


             reply	other threads:[~2017-11-16 20:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-16 20:42 Victor Porton [this message]
2017-11-16 21:00 ` Protected hash map (efficient programming with a protected type) Victor Porton
2017-11-16 23:50 ` Randy Brukardt
2017-11-17  0:28   ` Victor Porton
replies disabled

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