Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re^2: Semaphore puzzle

by jerryhone (Sexton)
on Feb 23, 2021 at 09:00 UTC ( #11128682=note: print w/replies, xml ) Need Help??

in reply to Re: Semaphore puzzle
in thread Semaphore puzzle

Thanks for the suggestion. I have already tried an exclusive creation (IPC_CREAT | IPC_EXCL) which I understand is what you're suggesting. I hit the same issue...the files arrive too closely together that neither create process detects that the semaphore has already been created so they both create successfully!

Replies are listed 'Best First'.
Re^3: Semaphore puzzle
by jeffenstein (Friar) on Feb 23, 2021 at 10:35 UTC

    I think choroba was suggesting this (untested):

    $sem = IPC::Semaphore->new( 4321, 1, S_IRUSR | S_IWUSR | IPC_CREAT | I +PC_EXCL ); if ( $sem ) { # New semaphore print "Semaphore created\n"; $sem->setval(0,1); print "Semaphore initialised\n"; } else { # Semaphore already exists so just open it print "Semaphore already exists - just open it\n"; $sem = IPC::Semaphore->new( 4321, 1, S_IRUSR | S_IWUSR ); + ); } print "Locking other threads\n"; $sem->op(0, -1, SEM_UNDO);

    But there is still a race condition, where the second process can attach to and use the semaphore after the first process creates it and before the first process initializes it.

      I've implemented a process with the sender creating a semaphore before sending a file request so that the receivers can use it - that all seems to work! :)
      Next issue...with our NDM implementation the sending and receiving IDs are different. My receiver processes are running under the receiver ID and can't remove the semaphore created by the sending ID when they're complete, even though both IDs are in the same group and the semaphore has group read/write permission. Is there an IPC semaphore permission that allows deletion by other than the owner?

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11128682]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (2)
As of 2023-06-07 00:20 GMT
Find Nodes?
    Voting Booth?
    How often do you go to conferences?

    Results (29 votes). Check out past polls.