<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow">
    <title>gmane.comp.lang.perl.perl-mongers.moscow</title>
    <link>http://blog.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10049"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10048"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10047"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10046"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10045"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10044"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10043"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10042"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10041"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10040"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10039"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10038"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10037"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10036"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10035"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10034"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10033"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10032"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10031"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10030"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10049">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10049</link>
    <description>&lt;pre&gt;
Ну уже ж разобрались. Сложно остается, threads медленные по своей
природе, коро не threads, так что там нечему быть особо медленным.


Скопирую из одного из ответов:




Event-loop намного проще. Но если трудно понимать теорию, то node.js и
джаваскрипт в браузере хорошие примеры, как даже с ужасненьким языком
это не сложно.
&lt;/pre&gt;</description>
    <dc:creator>Alexandr Gomoliako</dc:creator>
    <dc:date>2012-05-24T13:22:02</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10048">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10048</link>
    <description>&lt;pre&gt;Можно еще добавить "И не звони мне больше!" :)

24 мая 2012 г., 16:00 пользователь Nikita Zubkov &amp;lt;nikzubkov&amp;lt; at &amp;gt;gmail.com&amp;gt; написал:
&lt;/pre&gt;</description>
    <dc:creator>Андрей П. Ковбович</dc:creator>
    <dc:date>2012-05-24T12:45:32</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10047">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10047</link>
    <description>&lt;pre&gt;Я не собираюсь ничего доказывать. Здесь я лишь опревергаю бред, написанный
Вами, а именно:

1) Если речь о threads или Coro, то потоки это очень сложно и медленно
2) не гарантирует, что не прервется, так что семафоры и локи для
синхронизации нужны

Доказательств данных сентенций Вы так и не привели, так что продолжать
дисскуссию с Вам я не вижу смысла. Вы event-loop-тролль. До свиданья.

24 мая 2012 г., 13:16 пользователь Alexandr Gomoliako &amp;lt;zzz&amp;lt; at &amp;gt;zzz.org.ua&amp;gt;написал:




&lt;/pre&gt;</description>
    <dc:creator>Nikita Zubkov</dc:creator>
    <dc:date>2012-05-24T12:00:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10046">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10046</link>
    <description>&lt;pre&gt;
Если это не так - расскажите почему. Не надо только говорить, что по
религиозным соображениям :)
Я пока вижу только невероятную сложность кода ни для чего, в чем профит?
&lt;/pre&gt;</description>
    <dc:creator>Alexandr Gomoliako</dc:creator>
    <dc:date>2012-05-24T11:16:16</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10045">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10045</link>
    <description>&lt;pre&gt;Разговор ни о чем.
Вы доказали себе, что Coro, это бред, не пользуйтесь, любите eventloop'ы -
любите, но и писать сюда, что это бред и медленно, не нужно, т.к. это не
так.

24 мая 2012 г., 6:35 пользователь Alexandr Gomoliako &amp;lt;zzz&amp;lt; at &amp;gt;zzz.org.ua&amp;gt;написал:




&lt;/pre&gt;</description>
    <dc:creator>Nikita Zubkov</dc:creator>
    <dc:date>2012-05-24T09:26:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10044">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10044</link>
    <description>&lt;pre&gt;
Нет, параллельно ничего не будет выполняться, заставили меня
посмотреть в libcoro, все на одном процессоре. И там non-preemptive
scheduling, т.е. явная передача управления. Даже в случае с pthreads
там глобальный мутекс. Так что любая CPU интенсивная задача будет
мешать всем корутинам в процессе. Это один в один как с event
loop'ами, ну только намного сложнее.

Из libcoro/coro.c:
/* this mutex will be locked by the running coroutine */
pthread_mutex_t coro_mutex


Нигде не увидел, чтобы гарантировал, потому так и подумал, но все-таки
гарантирует. Пришлось смотреть исходники, чтобы это понять.

В общем коро это бред, а сложный софт и вся эта догма уже реально
достали. Это ни к чему хорошему не приводит, вон ООП в целую религию
переросло: есть те кто верит, а есть те, кто знает почему это маразм.
&lt;/pre&gt;</description>
    <dc:creator>Alexandr Gomoliako</dc:creator>
    <dc:date>2012-05-24T04:35:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10043">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10043</link>
    <description>&lt;pre&gt;Тут все просто, когда Coro-thread'у нужно выполнить какую-либо операцию и
она не может быть сделана без блокировки процесса, Coro выделяет для этого
действия отдельный C-thread, который будет выполняться паралельно, в
результате чего остальные Coro-thread'ы и Coro-scheduler могут спокойно
продолжать работу, пока выполняется эта блокирующая операция.

Такого очень сложно достичь в любом event-loop'е.

23 мая 2012 г., 22:05 пользователь Alexandr Gomoliako &amp;lt;zzz&amp;lt; at &amp;gt;zzz.org.ua&amp;gt;написал:




&lt;/pre&gt;</description>
    <dc:creator>Nikita Zubkov</dc:creator>
    <dc:date>2012-05-24T00:52:32</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10042">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10042</link>
    <description>&lt;pre&gt;Вы определенно чего-то не понимаете. И, видимо, не хотите.
Автоматически Coro-thread'ы не переключаются. Чтобы они переключились нужно
или явно это сделать (например, с помощью cede), или выполнить
"блокирующую" операцию (напрмер, считать данные из сокета).

А где вы прочитали про: "не гарантирует, что не прервется, так что семафоры
и локи
для синхронизации нужны"?

24 мая 2012 г., 1:33 пользователь Alexandr Gomoliako &amp;lt;zzz&amp;lt; at &amp;gt;zzz.org.ua&amp;gt;написал:




&lt;/pre&gt;</description>
    <dc:creator>Nikita Zubkov</dc:creator>
    <dc:date>2012-05-24T00:39:39</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10041">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10041</link>
    <description>&lt;pre&gt;Поигрался с коро немного. Не переключается во время интенсивных
тасков, но и не гарантирует, что не прервется, так что семафоры и локи
для синхронизации нужны. Короче в 100 раз сложнее программировать, чем
обычный event loop, а работает как event loop. Для чего такое надо?
Наделать сложного -- это в стиле автора :)
&lt;/pre&gt;</description>
    <dc:creator>Alexandr Gomoliako</dc:creator>
    <dc:date>2012-05-23T23:33:40</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10040">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10040</link>
    <description>&lt;pre&gt;
"While the coro thread is running it also might get assigned a C-level
thread, or the C-level thread might be unassigned from it, as the Coro
runtime wishes. A C-level thread needs to be assigned when your perl
thread calls into some C-level function and that function in turn
calls perl and perl then wants to switch coroutines."

В общем судя по этому, perl threads -- это те которые создаются через
async {} или new Coro, он их еще называет coroutines, чем они и
являются, а C threads приклеиваются к ним как дополнение, чтобы
переключаться по нативному коду, которые на самом деле C coroutines
(setjpm/longjpm и другие способы как раз для этого).
&lt;/pre&gt;</description>
    <dc:creator>Alexandr Gomoliako</dc:creator>
    <dc:date>2012-05-23T20:05:47</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10039">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10039</link>
    <description>&lt;pre&gt;
вне контекста я не понял цитату, что он там имеет в виду, но perl threads это
просто threads, те самые которые создаются
thread-&amp;gt;create/beginthread/pthread_create etc а C threads это видимо и есть
корутины. Они друг друга не исключают, несколько корутин может быть в одном
треде. 

&lt;/pre&gt;</description>
    <dc:creator>Dmitry Karasik</dc:creator>
    <dc:date>2012-05-23T19:54:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10038">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10038</link>
    <description>&lt;pre&gt;
Ясно, ну он пишет, что у него там в каждом приложении есть по
несколько C threads и сколько насоздаете perl threads. Т.е. здесь они
просто два разных вида корутин или нет? Надо смотреть реализацию.
&lt;/pre&gt;</description>
    <dc:creator>Alexandr Gomoliako</dc:creator>
    <dc:date>2012-05-23T19:44:33</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10037">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10037</link>
    <description>&lt;pre&gt;Как видно нет, раз "треды" на одном CPU для Вас полный бред.

23 мая 2012 г., 21:21 пользователь Alexandr Gomoliako &amp;lt;zzz&amp;lt; at &amp;gt;zzz.org.ua&amp;gt;написал:




&lt;/pre&gt;</description>
    <dc:creator>Nikita Zubkov</dc:creator>
    <dc:date>2012-05-23T19:35:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10036">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10036</link>
    <description>&lt;pre&gt;
Ну это не так все же. Coro это строго корутины из CS, а уж по каким
причинам он их называет тредами -- хз. Кроме него никто так их не называет.

&lt;/pre&gt;</description>
    <dc:creator>Dmitry Karasik</dc:creator>
    <dc:date>2012-05-23T19:27:46</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10035">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10035</link>
    <description>&lt;pre&gt;
Не волнуйтесь, я в вопросе хорошо разбираюсь. Но реализация Марка, как
обычно, не следует никаким понятиям из Computer Science, он там
выдумал C trhreads себе и о них пишет, что оно и как оно -- хз.

Но в любом случае, мой изначальный ответ остается корректным.
&lt;/pre&gt;</description>
    <dc:creator>Alexandr Gomoliako</dc:creator>
    <dc:date>2012-05-23T19:21:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10034">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10034</link>
    <description>&lt;pre&gt;Я думаю следует сначала разобраться в вопросе, а потом писать. )
Почитайте на досуге:

http://en.wikipedia.org/wiki/Fiber_(computer_science)

23 мая 2012 г., 21:05 пользователь Alexandr Gomoliako &amp;lt;zzz&amp;lt; at &amp;gt;zzz.org.ua&amp;gt;написал:




&lt;/pre&gt;</description>
    <dc:creator>Nikita Zubkov</dc:creator>
    <dc:date>2012-05-23T19:10:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10033">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10033</link>
    <description>&lt;pre&gt;
Не знаю, может быть, нигде об этом ни слова не нашел. Но наличие
семафоров, локов и pthread бэкэнда как-то смущает.

Тогда если это все еще и только на одном CPU, то это вообще полный бред :)
&lt;/pre&gt;</description>
    <dc:creator>Alexandr Gomoliako</dc:creator>
    <dc:date>2012-05-23T19:05:11</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10032">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10032</link>
    <description>&lt;pre&gt;Видимо теминология Coro понята не верно. Coro не использует треды уровня
ОС. Все треды Coro это файберы. И выполнятся все они на одном ядре.

23 мая 2012 г., 20:26 пользователь Alexandr Gomoliako &amp;lt;zzz&amp;lt; at &amp;gt;zzz.org.ua&amp;gt;написал:




&lt;/pre&gt;</description>
    <dc:creator>Nikita Zubkov</dc:creator>
    <dc:date>2012-05-23T18:46:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10031">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10031</link>
    <description>&lt;pre&gt;
Проблема не в Coro, а в потоках вообще. Особенно теперь, когда NUMA во
всех современных процессорах и скорость доступа к кэшам и к памяти из
разных ядер отличается во много раз. Почитать на тему:
    http://lwn.net/Articles/250967/
    http://ft.ornl.gov/pubs-archive/47-mccurdy-1.pdf
    http://developer.amd.com/Assets/NUMA_aware_heap_memory_manager_article_final.pdf
    http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access#Cache_coherent_NUMA_.28ccNUMA.29

Если лень читать, то все сводится к изоляции всего, т.е. как процессы :)
&lt;/pre&gt;</description>
    <dc:creator>Alexandr Gomoliako</dc:creator>
    <dc:date>2012-05-23T18:26:05</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10030">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10030</link>
    <description>&lt;pre&gt;А можно замеры скорости привести? С чего бы вдруг Coro это медленно? Да и
thread'ами не все так просто.

23 мая 2012 г., 16:00 пользователь Alexandr Gomoliako &amp;lt;zzz&amp;lt; at &amp;gt;zzz.org.ua&amp;gt;написал:




&lt;/pre&gt;</description>
    <dc:creator>Nikita Zubkov</dc:creator>
    <dc:date>2012-05-23T16:46:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10029">
    <title>Re: HTTPD на короутинах</title>
    <link>http://permalink.gmane.org/gmane.comp.lang.perl.perl-mongers.moscow/10029</link>
    <description>&lt;pre&gt;
Если речь о threads или Coro, то потоки это очень сложно и медленно,
посоветую выкинуть из головы эту идею :)
&lt;/pre&gt;</description>
    <dc:creator>Alexandr Gomoliako</dc:creator>
    <dc:date>2012-05-23T14:00:56</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.lang.perl.perl-mongers.moscow">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lang.perl.perl-mongers.moscow</link>
  </textinput>
</rdf:RDF>

