467,077 Members | 988 Online
Bytes | Developer Community
Ask Question

Home New Posts Topics Members FAQ

Post your question to a community of 467,077 developers. It's quick & easy.

SGI: Need Something like 1 Mutual Exclusion Semaphore for Multible Programs

Hello,

I have a assignment just thrown onto my desk.

What is the easiest way to solve it? Below is a brief
description of the task.

There are multible programs which use the same library routine
which is an interface to what I'll call a service program.

The problem is that only 1 request at a time can be serviced by
the service program.

My boss told me to just use somehting such as using shared
memory (via memmap) and set a flag in there to 1 when a program
wants service. The various programs are to wait in a loop until
that flag becomes 0. Once the flag becomes 0 then set it to 1 along
with setting other parameters to send to the service program.

But, woun't this lead to programs setting that flag to 1 at the
same time causing loss of service etc.

The way I see it is the flag described above is a critical
section and must be protected by a mutual exclusion semaphore.

I don't see anything wrong with using shared memory for sending
other parameters to the service routine.

O'kay what should I do?

Thank you,
Christopher Lusardi

P.S.: I'm sorry if I'm posting this to the wrong group. :-[

Jul 23 '05 #1
  • viewed: 1976
Share:
5 Replies
cl********@aol.com wrote:
Hello,

I have a assignment just thrown onto my desk.

[snip OT stuff]

O'kay what should I do?
1) Don't cross-post.

2) Use a spell checker.

3) Post to the appropriate forum. There is nothing here
remotely connected to C++ language issues.
Thank you,
Christopher Lusardi

P.S.: I'm sorry if I'm posting this to the wrong group. :-[


So you should be - you obviously had a pretty good idea that
this was OT here.

--
Lionel B

Jul 23 '05 #2
I can't use the following sequence because the programs that use the
library routine
reside on different computers.

sem_open
sem_init
sem_wait
sem_post
sem_post
The only thing I have to find out is how how do I declare the semaphore

to be in
shared memory.
Thanks,
Chris Lusardi

Jul 23 '05 #3
cl********@aol.com wrote:

I have a assignment just thrown onto my desk.
.... snip ...
P.S.: I'm sorry if I'm posting this to the wrong group. :-[


You are, in at least two of the groups you used. You also
neglected to set follow-ups to whatever home group you are using.
F'ups set.

--
"If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the
"Reply" at the bottom of the article headers." - Keith Thompson
Jul 23 '05 #4
In article <11**********************@g49g2000cwa.googlegroups .com>,
cl********@aol.com wrote:

: I have a assignment just thrown onto my desk.
:
: What is the easiest way to solve it? Below is a brief
: description of the task.
:
: There are multible programs which use the same library routine
: which is an interface to what I'll call a service program.
:
: The problem is that only 1 request at a time can be serviced by
: the service program.

There's a few options. You can, in order of decreasing preference:

* Fix your service program to queue requests
* Add an intermediary service program that queues requests to the service program
* Use some distributed API for locking (since you mention they're on different
machines), like maybe MPI, PVM, or something like RPC
* Use a reject-and-retry collision system

You could also possibly parallelize your service program so that it can serve
more than one request at a time, or make it transactional if it's not quite
parallelizable. It all depends on what your service program actually does.
Cheers - Tony 'Nicoya' Mantler :)

--
Tony 'Nicoya' Mantler -- Master of Code-fu -- ni****@ubb.ca
-- http://nicoya.feline.pp.se/ -- http://www.ubb.ca/ --
Jul 23 '05 #5
cl********@aol.com wrote:

I can't use the following sequence because the programs that use
the library routine reside on different computers.

sem_open
sem_init
sem_wait
sem_post
sem_post

The only thing I have to find out is how how do I declare the
semaphore to be in shared memory.


This has nothing to do with at least three of the groups to which
you cross-posted without troubling to find out what they were
about. F'ups set.

--
"If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article. Click on
"show options" at the top of the article, then click on the
"Reply" at the bottom of the article headers." - Keith Thompson
Jul 23 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by clusardi2k@aol.com | last post: by
4 posts views Thread by Leonardo Hyppolito | last post: by
5 posts views Thread by marvind | last post: by
10 posts views Thread by preethamkumark@yahoo.com | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.