Почему в планировщике GHC RTS он должен помечать возможность как свободную? - PullRequest
9 голосов
/ 18 мая 2011

Когда я прочитал комментарий WH GHC к планировщику , я был озадачен этим разделом:

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

Мой вопрос:Что касается жирного предложения, то, что действительно приведет к «Двойному переключению контекста», с или без пометки возможности как свободной.Кроме того, каковы два «переключателя», если они происходят - от who1 к who2, затем who2 к who3?

1 Ответ

3 голосов
/ 19 мая 2011
...