2013-07-25 3 views
-1

Я понимаю, что он создает другой поток и выполняет вычисление() в другом потоке. затем присоединяется к результатам, полученным после рекурсивного получения.Вызывает ли вызов fork() в конечном счете?

Я хотел бы знать, звонит ли fork()compute() или нет. Заранее спасибо.

+1

Посмотрите на исходный код. –

+0

@SotiriosDelimanolis Я проверил его, и мне это не кажется таким ясным. – Rollerball

+0

Я вижу, что он не используется на поверхности ... тогда как он делает то, что делает, не вызывая вычисления? – Rollerball

ответ

2

Метод fork не называет compute. Он выталкивает разветвленную задачу в рабочую очередь, в которой текущий поток определяет, должен ли он в конечном итоге вызвать compute или сообщить другие потоки, чтобы украсть эту задачу и вызвать вычисление.

+0

И рабочая очередь делится с другим процессом правильно? – Rollerball

+0

Каждый поток имеет свою очередь. Но каждый поток может уведомлять другие потоки в пуле FJ, чтобы начать красть работу из своей очереди. –

Смежные вопросы