Реактор Токио опрашивает все возможные функции poll () между каждым комбинатором? - PullRequest
2 голосов
/ 25 июня 2019

Вызов poll никогда не может блокироваться, в противном случае весь поток, на котором выполняется асинхронное ядро, будет заблокирован, останавливая все возможные причинные связи до тех пор, пока не вернется функция блокировки.

Я создаю будущее для реактора, и есть ряд комбинаторов, таких как my_future.and_then(…).map(…).then(…).

Реактор опрашивает будущее, а затем, перед тем, как запустить следующий комбинатор and_then, выполняет ли реактор итерацию по всем другим фьючерсам, проверяя, готовы ли они, или же реактор выполняет все комбинаторные операции my_future.and_then(…).map(…).then(…)

Я задаю этот вопрос, потому что важно знать, как спроектировать мою программу, учитывая причинность асинхронного ядра.

1 Ответ

2 голосов
/ 25 июня 2019

Насколько асинхронный исполнитель знает, не является промежуточными шагами.Каждый комбинатор потребляет предыдущего будущего, создавая совершенно новое будущее.В конце концов, единственное будущее передается исполнителю, и при необходимости он вызывает poll на это будущее.

Это зависит от того, будет ли каждое родительское будущее решать, когда и когда будут опрошены какие-либо дочерние фьючерсы, но этоможет произойти только при опросе родительского будущего.

См. также:

...