Вопрос по c++, multithreading – Что происходит с другими потоками, когда один поток разветвляется ()?

17

В C ++ с использованием pthreads, что происходит с другими вашими потоками, если один из ваших потоков вызывает fork?

Похоже, что темы не следуют. В моем случае я пытаюсь создать демон и использую fork () с выходом из родительского процесса для его деамонизации. Однако по новому пути в коде я создаю некоторые потоки до разветвления, а некоторые после. Есть ли простой способ перенести владение потоками на новый разветвленный процесс вместо того, чтобы перенести все мои создания потоков после разветвления?

Error: User Rate Limit Exceeded Dacav

Ваш Ответ

5   ответов
0

23

Error: User Rate Limit Exceeded WilliamKF
Error: User Rate Limit Exceededstackoverflow.com/questions/395877/…
3

pthread_atfork

pthread_atforkfork.

pthread_setspecific

pthread_atfork

Error: User Rate Limit Exceeded
2

If we call fork(2) in a multi-threaded environment the thread doing the call is now the main-thread in the new process and all the other threads, which ran in the parent process, are dead. And everything they did was left exactly as it was just before the call to fork(2).

3

pthread_atfork()exec()fork().

fork()pthread_atfork() ).

fork()

The fork() function is thus used only to run new programs, and the effects of calling functions that require certain resources between the call to fork() and the call to an exec function are undefined.

Похожие вопросы