На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (245) « Первая ... 142 143 [144] 145 146 ...  244 245  ( Перейти к последнему сообщению )  
> Есть ли будущее у DELPHI?
    Цитата D_KEY @
    Ты случаем не знаешь, как он сейчас мапит goroutines на треды?

    По всякому, может хоть в одном потоке все исполнять, хоть в разных, в зависимости от настроек.

    http://stackoverflow.com/questions/1009575...ding-goroutines
    Цитата

    The go runtime multiplexes the goroutines across the system threads
    The number of system threads is controlled by an environment variable GOMAXPROCS and defaults to 1 currently I think. This may change in the future.
      У меня нет GOMAXPROCS :)
      А если один, то непонятно, почему работает:
      ExpandedWrap disabled
        package main
        /* producer-consumer problem in Go */
         
         
        import ("fmt")
         
        var done = make(chan bool)
        var msgs = make(chan int)
         
        func produce () {
            for i := 0; i < 10; i++ {
                msgs <- i
            }
            done <- true
        }
         
        func consume () {
            for {
              msg := <-msgs
              fmt.Println(msg)
           }
        }
         
        func main () {
           go consume() // вызываем сначала consume
           go produce()
           <- done
        }

      Или chan'ы при пустой очереди переключают контекст? Или я туплю?
        Цитата D_KEY @
        У меня нет GOMAXPROCS :)
        А если один, то непонятно, почему работает:
        ...
        Или chan'ы при пустой очереди переключают контекст? Или я туплю?

        Небуферизованные каналы синхронны (это собственно средство синхронзации горутин).
        Т.е. когда ты посылаешь сообщение в канал горутина будет приостановлена, пока кто-нибудь не прочитает сообщение это сообщение из канала.
        С другой стороны горутина, которая читает сообщение тоже блокируется пока не прочитает сообщение. Синхронность чтения не зависит от буферизации, для неблокирующего чтения используется select (внутри for).

        Попробуй так:
        ExpandedWrap disabled
          package main
          /* producer-consumer problem in Go */
           
          import ("fmt")
           
          var done = make(chan bool)
          var msgs = make(chan int, 10) // буферизованный канал
           
          func produce () {
              for i := 0; i < 10; i++ {
                  msgs <- i
              }
              done <- true
          }
           
          func consume () {
              for {
                  msg := <- msgs
                  fmt.Println(msg)
              }
          }
           
          func main () {
              go consume() // вызываем сначала consume
              go produce()
              <- done
          }


        Добавлено
        Либо можно использовать небуферизованный канал и конкурентную отправку сообщений:

        ExpandedWrap disabled
          ...
          var msgs = make(chan int)
           
          func produce () {
              for i := 0; i < 10; i++ {
                  go send(i)
              }
              done <- true
          }
           
          func send(msg int) {
              msgs <- msg
          }
          ...


        Добавлено
        Если интересно и есть пару часов времени, можешь посмотреть на ютюбе "Go Concurrency Patterns" и "Lexical Scanning in Go".
          Цитата D_KEY @
          А если один, то непонятно, почему работает

          Так а что тебя удивляет? Обычная кооперативная многозадачность.
            Цитата MyNameIsIgor @
            Цитата D_KEY @
            А если один, то непонятно, почему работает

            Так а что тебя удивляет? Обычная кооперативная многозадачность.

            Я не очень понимаю, как этот код работает одновременно и в кооперативной и в многотредной реализации... Или я не могу динамически переключатся с одного подхода на другой?

            Добавлено
            Цитата korvin @
            Если интересно и есть пару часов времени

            Если бы они были, я бы тут не спрашивал :)
              Цитата D_KEY @
              Я не очень понимаю, как этот код работает одновременно и в кооперативной и в многотредной реализации... Или я не могу динамически переключатся с одного подхода на другой?

              Код, так сказать, входит в место переключения контекста. Это может быть чтение/запись в канал. Может, там ещё что в Go есть - я просто не в курсе, общую идею излагаю. Там он либо исполняет необходимое действие (записывает/считывает в/из канала), либо берёт из очереди первый готовый к выполнению контекст и переключает текущий поток на него. Ну, и многопоточно точно так же может происходить.

              Добавлено
              D_KEY, ты всё же прочитай про boost.task ;) Если время будет :D
              Сообщение отредактировано: MyNameIsIgor -
                Цитата MyNameIsIgor @
                Код, так сказать, входит в место переключения контекста. Это может быть чтение/запись в канал. Может, там ещё что в Go есть - я просто не в курсе, общую идею излагаю. Там он либо исполняет необходимое действие (записывает/считывает в/из канала), либо берёт из очереди первый готовый к выполнению контекст и переключает текущий поток на него. Ну, и многопоточно точно так же может происходить.

                Это понятно. Непонятно, как это динамически переключается с тредов на однопроцессную модель с переключением контекста. И по какому принципу.

                Цитата
                D_KEY, ты всё же прочитай про boost.task ;) Если время будет :D

                Так там нельзя динамически переключать, можно лишь выбрать изначально стратегию. Или я не прав?
                  Цитата D_KEY @
                  Это понятно. Непонятно, как это динамически переключается с тредов на однопроцессную модель с переключением контекста. И по какому принципу.

                  Один поток - это частный случай многопоточности. А что переключать то? Ну, увеличил количество потоков в пуле - и всё.
                  Цитата D_KEY @
                  Так там нельзя динамически переключать, можно лишь выбрать изначально стратегию.

                  Там, ЕМНИП, стратегия очереди задач выбирается. А можно ли менять количество потоков - не помню.
                    Да не в количестве потоков дело, а в механизме переключения. Ладно, может я туплю, надо будет в свободное время подумать :)
                      Цитата D_KEY @
                      Да не в количестве потоков дело, а в механизме переключения.

                      Так ты объясни что переключать то...
                        Да, зряплаты в Киеве, явно отстаёт от москалей и Ст.пт.. удивляет - почему?? (нет, правда непонятно!)

                        Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                          Вы сначала устройтесь на работу в Киеве, ну или в Москве с такой зряплатой. А потом уже удивляйтесь. :)
                          Мало ли что сказал [S]mike.
                          Вы его сначала спросите - где, за что и сколько он лично получает.
                          P.S. Конечно это нескромный вопрос, но...
                          P.P.S. Если это реклама Альтиума, то...

                          Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                            Цитата northener @
                            Вы сначала устройтесь на работу в Киеве, ну или в Москве с такой зряплатой. А потом уже удивляйтесь. :)

                            Ну, во-первых - необязательно на ВЫ.

                            Во-вторых, объясню, чему именно я удивляюсь (если так не понятно): а удивляюсь я тому, что всегда считал украинских прогаммеров самыми лучшими, способными и талантливыми (от такой вот я москаль :yes: ) - в любом случае они намного круче наших.
                            Да, так я всегда считал..

                            И какого, спрашивется, хрена, этих самых лучших, способных и талантливых держат на копейках (а пара килобаксов - это и есть копъё, на такие деньги и семью содержать не возможно..)

                            И какого, спрашивется, хрена, какой-то сраный сайтостроитель может запросто в Москве тыщ на 150 устроиться (ты уж меня извиняй, но всяких-там сайтостроителей и скриптовиков я за программеров не считаю).

                            Да, в Москве системщик может на те же бабки устроиться (если не больше). Но почему в Хохляндии по другому?? Почему там этих самых способных и талантливых не поддерживают??

                            Короче, именно этому факту я и удивляюсь. А тебя, разьве это не удивляет??

                            Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                              Цитата Krid @
                              И какого, спрашивется, хрена, этих самых лучших, способных и талантливых держат на копейках (а пара килобаксов - это и есть копъё, на такие деньги и семью содержать не возможно..)

                              Потому что Украина в основном аутсорсит на буржуев. А Дельфи (кроме вот вышеупомянутому Альтиуму) никому из буржуев не нужно. В основном нужны Джава, Шарп, Обжектив Си, веб-девелопмент.

                              Цитата Krid @
                              И какого, спрашивется, хрена, какой-то сраный сайтостроитель может запросто в Москве тыщ на 150 устроиться (ты уж меня извиняй, но всяких-там сайтостроителей и скриптовиков я за программеров не считаю).

                              Ну, Розыч мне в Москве всего лишь трешку обещал :lol: Я столько и в Киеве зарабатываю, правда не на Дельфях.

                              Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                                Цитата [S]mike @
                                Потому что Украина в основном аутсорсит на буржуев. А Дельфи (кроме вот вышеупомянутому Альтиуму) никому из буржуев не нужно. В основном нужны Джава, Шарп, Обжектив Си, веб-девелопмент.
                                Как не печалька, но оно так и есть :(
                                Скрытый текст
                                Но теперь кроме Альтиума это нужно будет и УЗ.
                                ХА ХА ХА ХА ХА


                                Добавлено
                                Цитата [S]mike @
                                Ну и пару инсайдерских новостей, хотя, по сути, ничего нового:

                                Кстати я когда установил XE3 я в первую очередь глянул на поддержку x64 C++ и сильно огорчился когда ее там не увидел :(

                                Это сообщение было перенесено сюда или объединено из темы "Новости Embarcadero"
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (245) « Первая ... 142 143 [144] 145 146 ...  244 245


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,2844 ]   [ 14 queries used ]   [ Generated: 22.12.25, 11:47 GMT ]