2013-09-25 3 views
3

Принимая во внимание, что я полностью осведомлен о актерах Scala и Akka и других, не-stdlib-пакетах параллелизма для Scala, привык к Gevent (это зеленая или неблокирующая инфраструктура IO/библиотека для Python, которая не была привлекая внимание, которое, по моему мнению, заслуживает по сравнению с такими вещами, как NodeJS и всевозможные структуры Actor), и как легко писать с ним параллельный код - просто напишите код, как будто с «реальными» потоками, но не используются фактические потоки операционной системы, поэтому вы можете иметь тысячи из них, например, процессы Erlang и весь существующий код Just Works. Я должен сказать, что я в настоящее время не слишком влюблен в довольно ограниченный (и несколько сложно скомпоновать с «нормальным кодом»), в котором параллельный код должен быть написан, когда актеры стиля Akka используются.Kilim with Scala: возможно ли и как зрелые, как более «стандартные» параллельные параллели?

Теперь существует Kilim, который, как представляется, делает то, что делает Gevent (за исключением использования преобразования CPS, не выполняющего манипуляции со временем выполнения); Известно также, что Scala может полностью взаимодействовать с Java. Однако совместима ли эта функциональная совместимость с уровнем, на котором работает Kilim? Если да, то какие ключевые моменты следует иметь в виду, когда реализована комбинация Scala и Kilim? Я нашел некоторые ресурсы (например, https://github.com/lllazu/kilim-scala) на этом по поиску в Google, но ничего понятного или существенного.

Примечание: Я бы также быть заинтересован в таких аспектах, как:

  • , почему это, как правило, не рекомендуется подход, чтобы начать с (т.е. я должен использовать Акку);
  • , что я ошибаюсь, и актерский код в стиле Akka не является ограничивающим или не ограничивает достаточно, чтобы иметь какое-либо значительное влияние на (высокий уровень) стиль кода;
+0

На самом деле вы задаете свой вопрос в * Не стесняйтесь комментировать все, что связано, например: длинный список разных тем * стиль автоматически делает ваш вопрос слишком широким и, таким образом, обескуражен в stackoverflow. –

+2

Вы должны посмотреть на [Habanero Scala] (https://wiki.rice.edu/confluence/display/HABANERO/Habanero-Scala). Студент-градир, которого я знаю, сделал это для его магистерской диссертации, и он представил его в Scala Days год или два назад. Я почти уверен, что он использует Килим, чтобы помочь сделать вещи неблокирующими. Вы должны посмотреть на примеры, чтобы узнать, что именно вы ищете. – DaoWen

+0

Я изложил вопрос о том, чтобы устранить/уменьшить части, основанные на мнениях, и подчеркнуть, что ** основной вопрос должен быть основан на фактах. –

ответ

1

Смело есть комментарий, что связанно

В C/C++ наиболее общий и наименее инвазивный подход к асинхронному выполнению, кажется, обратные вызовы и я предпочитаю оставаться с обратными вызовами чтобы иметь возможность повторно использовать большинство библиотек. С a bit of coroutine magick любая обратная к обратному объекту может быть использована императивно, то есть для любого метода foo (callback (bar)) Я могу сделать обертку bar = foo (cbcoro), которая может использоваться при нормальном императивном потоке управления (при выполнении контекстного переключения за сценой).

Теперь я начинаю новый проект в Scala и попытаюсь использовать подобные делимированные продолжения.

P.S. Инструмент байт-кода, который отлично работает с кодом байт-кода Java, все еще может работать с байт-кодом Scala, я видел, как это происходит с db4o и DataNucleus, поэтому вам нужна хорошая поддержка (или очень хорошее знание рассматриваемых инструментов) это так.

+0

Моя цель состояла в том, что любая императивная библиотека может использоваться в моем неблокирующемся/«зеленом» коде, что и делает gevent, поэтому Я надеялся, что Килим привнесет это в Java * и * Scala. –

+1

Эрик, вы не можете использовать «любую императивную библиотеку» с Kilim, потому что 1) Kilim не может заменить системные вызовы, такие как «обезьяна-патч» gevent: JVM имеет динамическую загрузку байт-кода, и ткач Kilim не может повлиять на байт-код, который приложение загружается и/или генерируется во время выполнения (например, JavaScript Rhino или Nashorn); 2) Килим, насколько я вижу, требует, чтобы код использовал почтовые ящики Kilim, а настоящие библиотеки ничего не знали о Kilim и его почтовых ящиках. – ArtemGr

+0

Хорошая точка; Я просто хочу, чтобы вопрос был снят, чтобы такая информация могла быть опубликована в качестве ответов! –

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

  • Нет связанных вопросов^_^