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

Victor Porton wrote:
> 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.

It seems I know what to do:

In the signal handler (be it SIGCHLD, SIGTERM, or SIGNINT) I will just send 
one byte (indicating the kind of the signal) from the task through a pair of 
pipes to the task itself. Then I will use poll() Unix call to detect when 
this "one byte" is sent and run whatever I need without the need to make it 
compatible with signal handlers and without the need to use protected 
procedures (except of the protected procedure which handles the signal).

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

  reply	other threads:[~2017-11-16 21:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-16 20:42 Protected hash map (efficient programming with a protected type) Victor Porton
2017-11-16 21:00 ` Victor Porton [this message]
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