in reply to Problem in Inter Process Communication

I don't know much, if anything, about forking processes or creating threads in perl.

However, if each child process, i, is creating Y threads, then should the threads perhaps be created in the child process?

Then you'd have X(i)Y(j) for the thread id - X(i) being the id of the child and j being the id of the j'th thread created by child i, i=1..X and j=1..Y.

Think of it as a matrix or table with i,j identifying the matrix element or table cell running.

It's not clear to me if you need just all threads of child X(i) to be able to communicate, but they don't need to communicate with the threads of other children X(k),k=0..X, k!=i, i.e.

X(i)Y(j) can communicate with X(i)Y(k), k!=j but not X(k)Y(*), k!=i.

Or if you need all threads to be able to communicate to all other threads created by other children, i.e.

X(i)Y(j) can communicate with X(u)Y(v) and i,u=1..X, j,v=1..Y although i!=u and j!=v might still apply.

Replies are listed 'Best First'.
Re^2: Problem in Inter Process Communication
by libvenus (Sexton) on Aug 20, 2008 at 12:39 UTC
    Hi LesleyB,

    By spawning a child process using fork i m duplicating the perl interpreter which is running in a separate process. So if i have spawned 3 children total no of perl interpreter running would be 4 one for parent + 3 for the children.

    when i m creating thread inside the child process forked above, no separate process is made. They are subprocesses of the child process.Now i want a way to communicate between these subprocesses and the process that has launched them.

    Thanks

      Don't have a chance to look at your source at this second, but depending on what your trying to use IPC for, these may be useful:

      1. take a look at zentara's excellent thread primer -- he uses shared items to communicate items within threads. http://perlmonks.org/?node_id=691785

      2. take a look at the source in http://perlmonks.org/?node_id=704138 where i use the Threads::Queue to do IPC.