2010-05-05 2 views
1

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

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

Честно говоря, ваш вопрос немного сложно разобрать. – bortzmeyer

ответ

1

Посмотрите на раздел в спецификации Go языка, который является полным Go пакет, который реализует параллельное простое сито, используя операторы и выбирали и каналы An example package.

Подробное описание того, как это работает, см. В разделе «Учебное пособие» по адресу Prime numbers. Кроме того, посмотрите раздел Go Tutorial на странице Multiplexing.

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

Наконец, ознакомьтесь с соответствующими разделами Спецификации языка Go, например. разделы по Go statements, Channel types и Select statements.

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

1

, как вы получите параллелизм в движении, чтобы использовать ключевое слово «идти» перед функциями, которые вы хотите выполнить одновременно:

Func бар() {...}

функ Foo() { идут бар() идут бар() идут бар() ... код, который ждет все бары, чтобы закрыть ... }

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

Хотей

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