Как получить параллельный метод

Как получить параллельный метод?

type test struct {
    foo uint8
    bar uint8
}

func NewTest(arg1 string) (*test, os.Error) {...}

func (self *test) Get(str string) ([]byte, os.Error) {...}

Я думаю что весь код для метода Get() должен быть помещен внутренний из go func(), и затем использовать канал.

func (self *test) Get(str string) ([]byte, os.Error) {
    go func() {
        // Code for this method.
    }()
}
  • Там была бы проблема, если она назвала другой метод от Get()? Или был бы, это также должно быть параллельно?
1
задан Flimzy 9 July 2017 в 08:48
поделиться

2 ответа

Взгляните на раздел Пример пакета в спецификации языка Go, который представляет собой полный пакет Go, который реализует параллельное простое sieve, используя операторы go и каналы.

Подробное описание того, как это работает, см. В разделе «Учебник Go» на Простые числа . Также см. Раздел «Учебник Go» на Мультиплексирование .

Прочтите раздел «Эффективный переход» на Параллелизм .

Наконец, прочтите соответствующие разделы спецификации языка Go, например разделы в операторах Go , Типах каналов и операторах Select .

Да, вы можете вызвать другой метод из вашего метода Get (). Поскольку вызов метода не является параллельным оператором go, он будет выполняться немедленно перед выполнением следующего оператора.

1
ответ дан 3 September 2019 в 00:46
поделиться

Способ получения параллелизма в go заключается в использовании ключевого слова "go" перед функциями, которые вы хотите выполнять параллельно:

func bar () { ... }

func foo () { go bar() go bar() go bar() ... код, который ждет, пока все бары закроются... }

Это все, что нужно для одновременного запуска 3 баров. PS: Возможно, вы захотите привести пример на языке, с которым вы знакомы, C++ / Perl / Python / что угодно, поскольку фрагмент кода go, который вы включили, не слишком помог. Я понимаю, что вы, вероятно, владеете английским лучше, чем я вашим родным языком, но вам также может понадобиться помощь в более четкой формулировке вашего вопроса.

Hotei

1
ответ дан 3 September 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: