开发者

Multithreaded fork

Can fork() function be used to replicate a multithreaded proce开发者_开发技巧ss. And if so, will all threads be exactly the same and if not, why not. If replication can't be done through fork, is there any other function which can do it for me?


After a fork, only one thread is running in the child. This is a POSIX standard requirement. See the top answer to the question fork and existing threads ?.


No, the child will only have one thread. Forking a threaded process is not trivial. (See this article Threads and fork(): think twice before mixing them for a good rundown).

I don't know of any way of cloning a process and all its threads, I don't think that's possible on Linux.


No.

A fork creates a new process with his own thread(s), copies the file descriptor and the virtual memory.

A child process does NOT share the same memory with his father. So this is absolutely not the same.


Suppose that one of the other threads (any thread other than the one doing the fork( )) has the job of deducting money from your checking account.

POSIX defined the behavior of fork( ) in the presence of threads to propagate only the forking thread.

If the other thread has a mutex locked, the mutex will be locked in the child process, but the lock owner will not exist to unlock it. Therefore, the resource protected by the lock will be permanently unavailable.

http://www.doublersolutions.com/docs/dce/osfdocs/htmls/develop/appdev/Appde193.htm

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜