in reply to I am not able to join a thread when another child process is running which was forked using open.
I think maybe, based on things I've read
One problem is you're using 5.10.0, which had some thread issues. Newer is better.
Another problem is pipes and threads may not be reliable in general, at least probably not on windows, has to do with blocking reads.
If you're using threads, forget about pipes, communicate through an array.
If you still want pipe communication, try forks (unless you're on windows), its threads api implemented using fork.
See Non-blocking Reads from Pipe Filehandle, any module with streaming pipe implementation for use with threads and other [responses on threads by BrowserUk