На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Модераторы: Qraizer
Страницы: (14) « Первая ... 12 13 [14]  все  ( Перейти к последнему сообщению )  
> SObjectizer 5.3.0
    Обновилась серия презентаций Dive into SObjectizer-5.5, которая выполняет плавное погружение пользователя в возможности и особенности SObjectizer-а. Теперь все части описывают самую последнюю стабильную версию -- 5.5.15.

    Серьезно была переработана самая первая часть, написанная почти год назад. Лишнее украшательство выброшено, примеры чуток упрощены. Вроде бы получилось более-менее неплохо -- основные моменты объяснены и показаны на очень простых примерах.

    На данный момент в серию входит семь презентаций:Еще парочка (про диспетчеры и mchain-ы), надеюсь, появится в ближайшие две-три недели.
        Создана тема для сбора хотелок для следующей версии SObjectizer: Version 5.5.16 Wish List.

        Предположительно, она будет выпущена в марте или в апреле 2016. Сроки выхода зависят от объема и сложности нововведений. А повлиять на этот объем/сложность можно оставив свою хотелку в обсуждении по ссылке или прямо здесь.
          Еще один маленький примерчик: Конкурентный HelloWorld на Go и на C++.
            Цитата eao197 @
            Еще один маленький примерчик: Конкурентный HelloWorld на Go и на C++.

            :facepalm: кто так пишет? Ничего, что между print("hello ") и println("world!") какой-нибудь другой поток может вставить свой print?

            ExpandedWrap disabled
              package main
               
              import "fmt"
               
              func main() {
                  sayHello := make(chan string)
                  messages := make(chan string)
                  done     := make(chan string)
                  
                  go func() {
                      for i := 0; i < 10; i++ {
                          sayHello <- "Hello"
                      }
                      close(sayHello)
                  }()
                  go func() {
                      for hello := range sayHello {
                          messages <- hello + " World!"
                      }
                      close(messages)
                  }()
                  go func() {
                      i := 0
                      for msg := range messages {
                          fmt.Println(fmt.Sprintf("%d. %s", i, msg))
                          i++
                      }
                      done <- "Done"
                  }()
                  <-done
              }


            http://play.golang.org/p/57HuG9jgt8
              Цитата korvin @
              Ничего, что между print("hello ") и println("world!") какой-нибудь другой поток может вставить свой print?
              В данном примере это не страшно, так как никаких других потоков просто нет.
              Другое дело, что использовать каналы всего лишь для синхронизации потоков, пожалуй, слишком расточительно.
                Цитата korvin @
                кто так пишет? Ничего, что между print("hello ") и println("world!") какой-нибудь другой поток может вставить свой print?


                Во-первых, исходный пример не мой. Я его нашел уже в таком вот виде. Моей задачей было показать, как тоже самое можно сделать на C++.

                Во-вторых, как раз в данном примере никто не должен вставлять свои принты между hello и world. Это типа демонстрация детерминированной передачи управления между рабочими потоками посредством каналов.
                  Выпущена версия 5.5.15.2 с поддержкой Android-а (поддержка реализована на основе CrystaX NDK).
                    Цитата eao197 @
                    Выпущена версия 5.5.15.2 с поддержкой Android-а (поддержка реализована на основе CrystaX NDK).

                    А на стандартном NDK почему не собирается?
                      Цитата MyNameIsIgor @
                      А на стандартном NDK почему не собирается?


                      SO-5 был портирован под Андроид силами команды CrystaX NDK, целью которых является насыщение CrystaX NDK полезным для них софтом. Сам CrystaX NDK появился как следствие недостатков родного NDK из-за которых нормальная разработка под Android на С++ обходится слишком дорого. Подробнее об этом написано на сайте проекта CrystaX NDK.
                        Цитата eao197 @
                        Сам CrystaX NDK появился как следствие недостатков родного NDK из-за которых нормальная разработка под Android на С++ обходится слишком дорого. Подробнее об этом написано на сайте проекта CrystaX NDK.

                        Я как бы в курсе. Но многое, из-за чего изначально появился CrystaX NDK, было исправлено в оригинальном NDK. И вот прямо сейчас нам вовсе не дорого обходится единая кодовая база для Windows/Linux/Mac/Android.
                        CrystaX NDK, насколько мне известно, и сейчас, после всех улучшений оригинального NDK, более продвинутый. Потому я и спрашиваю: что такого вы используете в коде SO, что вам понадобился CrystaX? Вы вообще пробовали собирать SO оригинальным NDK?
                        Цитата eao197 @
                        SO-5 был портирован под Андроид силами команды CrystaX NDK

                        Что же они там изменяли для портирования?
                        Цитата eao197 @
                        целью которых является насыщение CrystaX NDK полезным для них софтом

                        Странно как-то... NDK нужен для разработчика. Какие библиотеки им собирать, решать разработчику. Зачем насыщать NDK каким-то софтом? Кому надо, тот соберёт.
                        Сообщение отредактировано: MyNameIsIgor -
                          Цитата MyNameIsIgor @
                          Потому я и спрашиваю: что такого вы используете в коде SO, что вам понадобился CrystaX?

                          Еще раз: это не нам потребовался CrystaX NDK, это разработчики CrystaX NDK заинтересовались портированием SO под Android. И сделали этот порт под свой NDK.

                          Сам SO-5 не использует ничего за пределами стандартной библиотеки C++11.

                          Цитата MyNameIsIgor @
                          Вы вообще пробовали собирать SO оригинальным NDK.

                          Нет. Основной команде SO-5 надобности в поддержке платформы Android не было до сих пор.

                          Цитата MyNameIsIgor @
                          Что же они там изменяли для портирования?

                          Были поправлены CMake-овские проектные файлы под особенности кросс-платформенной сборки. Так же были увеличены тайм-ауты в ряде юнит-тестов, чтобы тестовые сценарии успевали отрабатывать на слабых процессорах и на эмуляторах.

                          В самом SO-5 ничего не исправлялось.

                          Цитата MyNameIsIgor @
                          Странно как-то... NDK нужен для разработчика.

                          Разработчики CrystaX NDK решают свою задачи. Как я понимаю, им нужно простота разработки под Android, поэтому они и сделали свой NDK и на основе этого NDK портировали на Android тот же Boost. Потому что им нужен Boost. Может им и SO-5 для чего-то понадобился. Вот они и его решили портировать. Заодно реализовав поддержку CMake в своем NDK.
                            Цитата eao197 @
                            Еще раз: это не нам потребовался CrystaX NDK, это разработчики CrystaX NDK заинтересовались портированием SO под Android

                            Ok
                              Мы провели сравнение производительности SO-5.5.15 и CAF-0.14.4. Вкратце результаты такие: операции создания/удаления агентов в SO-5 медленнее, отсылка и доставка сообщений в SO-5 быстрее.

                              Плюс объяснение, почему в SO-5 создание/удаление агентов обходится дороже, чем в других инструментах.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0635 ]   [ 18 queries used ]   [ Generated: 19.03.24, 09:23 GMT ]