30 августа 2026
Алексей Худяковтекст ещё не в индексе
А в смысле зашедулить тред на тред? Треды шедулятся на капабилити. Там же ясно написано что шедулинг гринтредов никак не отличается от шедулинга ОС тредов
У меня между комбинаторами в теоретическом изложении ( классике S,K.I) и тем что делает здесь Мегапарсек - лежит пропасть непонимания.
НА каком принципе или на каком основании фреймворк Мегапарсек затащил к себе этот термин? Зачем в этой задаче мне знать кто там комбинатор? И как я это использую?
Или комбинатоор - это общий подход языка Хаскель. Но я его не видел в туториалах.
По классике туториалы описывали модули и функции и все.
В итоге Грин тред выполняется OS тредом, через капабилити, при forkOS Грин тред привязывается к конкретному OS (но не обязательно к конкретной капабилити, между ними может и мигрировать; выполняться будет только там даже если капабилити привязаны к OS тредам), вопрос был в том, может ли что-то ещё выполняться на этом OS треде, тк документация оставляет этот вопрос нераскрытым
Aleksandr VershilovВ итоге Грин тред выполняется OS тредом, через капабилити, при forkOS Грин тред привязывается к конкретному OS (но не обязательно к конкретной капабилити, между ними может и мигрировать; выполняться будет только там даже если капабилити привязаны к OS тредам), вопрос был в том, может ли что-то ещё в
Как по мне все довольно понятно:
Using forkOS instead of forkIO makes no difference at all to the scheduling behaviour of the Haskell runtime system. It is a common misconception that you need to use forkOS instead of forkIO to avoid blocking all the Haskell threads when making a foreign call; this isn't the case. To allow foreign calls to be made without blocking all the Haskell threads (with GHC), it is only necessary to use the -threaded option when linking your program, and to make sure the foreign import is not marked unsafe.
Aleksandr VershilovВ итоге Грин тред выполняется OS тредом, через капабилити, при forkOS Грин тред привязывается к конкретному OS (но не обязательно к конкретной капабилити, между ними может и мигрировать; выполняться будет только там даже если капабилити привязаны к OS тредам), вопрос был в том, может ли что-то ещё в
Но это ведь логика реализации самой капабалити. Для шедулера это абстракция и его реализация не имеет значения, разве нет?
Dima | No AI clubНо это ведь логика реализации самой капабалити. Для шедулера это абстракция и его реализация не имеет значения, разве нет?
При forkOS у тебя у треда выставляется флаг что он только на одном ос треде выполняется, в этом случае капабилити «переедет» на этот тред и будет выполнять зеленый
Aleksandr VershilovПри forkOS у тебя у треда выставляется флаг что он только на одном ос треде выполняется, в этом случае капабилити «переедет» на этот тред и будет выполнять зеленый
Ну на мой взгляд тут происходит смешение абстракций и комментарий про отсутствие разницы между ОС тредами и гринтредами вполне себе однозначно предостерегает от этого
Dima | No AI clubа если прибивать капабилити к ядрам и везде использовать forkOn, то можно в принципе не прибегать к forkOS?
Хотя, наверное, ядра CPU не имеют значения. Просто forkOn
Алексей ХудяковНу так такие вопросы задают, когда становятся важны детали реализации. Вот мне надо получить ОС тред в эксклюзивное пользование
В общем из того что forkOS не отличается для шедулера от forkIO следует что ОС тред будет эксклюзивным