ISAI student has asked for the wisdom of the Perl Monks concerning the following question:
Hello all. I am trying to do the following: I have a shared hash, namely %hash1 I initiate a lock. The I call for a function on a particular key, and assign the function value to the key. Is the lock still on? I could not find an answer to it, and the documentation I have found on perldoc does not cover that angle.
See code:use strict ; use threads ; use threads::shared ; my %hash1 =(1,2, 3,4) ; { lock (%hash1) ; $hash1{1} = foo ($hash1{1}); $hash1{3} = foo ($hash1{3}) }
My question is: Is the advisory lock active when $hash{3} is accessed and assigned, or is calling foo removes the lock (because of use strict and the scoping limitation? )Trying to test it may be tricky, and I am not sure if I know how to cover most angles. Using foo to lock the variable is useless, and passing it a reference to the hash, and then locking, may cause deadlocks.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: advisory lock status when calling a function, with use strict
by Anonymous Monk on Jan 01, 2013 at 07:21 UTC | |
by ISAI student (Scribe) on Jan 01, 2013 at 07:36 UTC | |
Re: advisory lock status when calling a function, with use strict
by mhearse (Chaplain) on Jan 01, 2013 at 17:48 UTC |