9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: erik quanstrom <quanstro@quanstro.net>
To: 9fans@9fans.net
Subject: Re: [9fans] exiting nicely
Date: Wed, 30 Sep 2009 09:25:35 -0400	[thread overview]
Message-ID: <8c0180e1040b5ab14761083fdd1b9600@brasstown.quanstro.net> (raw)
In-Reply-To: <<9d12d327612343c13bd110253c2632c6@9grid.es>>

> I have a couple of processes working together sharing memory and using locks, and when the program finish the job and exits, the proceses in Rendez state  does not exit, and i need to slay them.
>
> I'm using postnote(PNGROUP,...) call, should i write a postctl to slay the waiting proceses or is there a better way to accomplish this? (may be using canlock and wait for it with a loop and sleep instead of a qlock?)

looping on canq?lock is not a good idea.

i think what you want is to ensure that no proc is
doing anything that shouldn't be interrupted when
it is killed or quits.  for many programs, interrupting
writes is a bad idea.  one would want a half-written
upas index file, for instance.  rc checks a global sentinal at
a few strategic points (where it can clean up easily)
when it receives a signal.  perhaps you could borrow
this technique, as in

	/*
	 * exit the building single file
	 */
	void
	chkexit(QLock *q)
	{
		if(!exiting)
			return;
		qunlock(q)
		cleanexit();
	}
...
	qlock(&resourcelk);
	chkexit(&resourcelk);
	...
	qunlock(&resourcelk);

this might not be appropriate.  the bad things
that might happen if your interrupted in the
middle of something might not be bad enough
to worry about or this might be difficult to implement
with your program.

- erik



       reply	other threads:[~2009-09-30 13:25 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <<9d12d327612343c13bd110253c2632c6@9grid.es>
2009-09-30 13:25 ` erik quanstrom [this message]
2009-09-30 13:57   ` gdiaz
2009-09-30  7:46 gdiaz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8c0180e1040b5ab14761083fdd1b9600@brasstown.quanstro.net \
    --to=quanstro@quanstro.net \
    --cc=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).