comp.lang.ada
 help / color / mirror / Atom feed
* Protected hash map (efficient programming with a protected type)
@ 2017-11-16 20:42 Victor Porton
  2017-11-16 21:00 ` Victor Porton
  2017-11-16 23:50 ` Randy Brukardt
  0 siblings, 2 replies; 4+ messages in thread
From: Victor Porton @ 2017-11-16 20:42 UTC (permalink / 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


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

end of thread, other threads:[~2017-11-17  0:28 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-16 20:42 Protected hash map (efficient programming with a protected type) Victor Porton
2017-11-16 21:00 ` Victor Porton
2017-11-16 23:50 ` Randy Brukardt
2017-11-17  0:28   ` Victor Porton

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