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
next prev parent 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