[SciPy-user] shared memory machines
Philip Semanchuk
philip at semanchuk.com
Mon Feb 9 10:07:16 EST 2009
On Feb 9, 2009, at 6:56 AM, Sturla Molden wrote:
> On 2/9/2009 12:38 PM, Gael Varoquaux wrote:
>
>> This means that we probably need a shared reference counter :(.
>> Sounds
>> tedious to implement.
>
> On System V, you can get the attachment count using shmctl with
> IPC_STAT. Then after calling shmdt, checking the count and marking for
> removal if it is zero:
>
> int cleanup(int shmid)
> {
> int ierr;
> struct shmid_ds buf;
> ierr = shmctl(shmid, IPC_STAT, &buf);
> if(ierr < 0) goto error;
> if (buf.shm_nattch == 0) {
> ierr = shmctl(shmid, IPC_RMID, NULL);
> if(ierr < 0) goto error;
> }
> return 0
> error:
> return errno;
> }
Unfortunately POSIX IPC doesn't report that information.
Since I'm not a numpy user I'm a little lost as to how you're using
the shared memory here, but I gather that it is effectively "magic" to
a numpy user? i.e., he doesn't have any idea that a shared memory
segment is being created on his behalf? If that's the case I don't see
any way around reference counting.
More information about the SciPy-User
mailing list