タグ付けされた質問 「goroutine」

12
Javaでメソッドを非同期に呼び出す方法
私は最近Goのgoroutinesを見ていて、Javaに似たものがあればいいと思いました。私がメソッド呼び出しを並列化する一般的な方法を検索した限り、次のようなことをすることです: final String x = "somethingelse"; new Thread(new Runnable() { public void run() { x.matches("something"); } }).start(); それはあまりエレガントではありません。これを行うより良い方法はありますか?プロジェクトでそのようなソリューションが必要だったので、非同期メソッド呼び出しの周りに独自のラッパークラスを実装することにしました。 J-Goでラッパークラスを公開しました。しかし、それが良い解決策かどうかはわかりません。使い方は簡単です: SampleClass obj = ... FutureResult<Integer> res = ... Go go = new Go(obj); go.callLater(res, "intReturningMethod", 10); //10 is a Integer method parameter //... Do something else //... System.out.println("Result: "+res.get()); //Blocks until …

3
sync.WaitGroupの例は正しいですか?
この使用例はsync.WaitGroup正しいですか?期待どおりの結果が得られますが、wg.Add(4)との位置についてはわかりませんwg.Done()。で4つのゴルーチンを一度に追加することは意味がありwg.Add()ますか? http://play.golang.org/p/ecvYHiie0P package main import ( "fmt" "sync" "time" ) func dosomething(millisecs time.Duration, wg *sync.WaitGroup) { duration := millisecs * time.Millisecond time.Sleep(duration) fmt.Println("Function in background, duration:", duration) wg.Done() } func main() { var wg sync.WaitGroup wg.Add(4) go dosomething(200, &wg) go dosomething(400, &wg) go dosomething(150, &wg) go dosomething(600, &wg) wg.Wait() fmt.Println("Done") …
108 go  goroutine 

5
時間を使わずにすべてのゴルーチンが完了するのを待つ方法スリープ?
このコードは、同じフォルダー内のすべてのxmlファイルを選択します。呼び出された実行可能ファイルがコールバックメソッドの各結果に非同期で処理を適用するためです(以下の例では、ファイルの名前だけが出力されます)。 メインメソッドが終了しないようにスリープメソッドを使用しないようにするにはどうすればよいですか?チャンネルに頭を巻き付けるのに問題があります(結果を同期するにはそれが必要だと思います)。 package main import ( "fmt" "io/ioutil" "path" "path/filepath" "os" "runtime" "time" ) func eachFile(extension string, callback func(file string)) { exeDir := filepath.Dir(os.Args[0]) files, _ := ioutil.ReadDir(exeDir) for _, f := range files { fileName := f.Name() if extension == path.Ext(fileName) { go callback(fileName) } } } func main() …

6
ゴルーチンを止める方法
私はメソッドを呼び出し、チャネルに戻り値を渡すゴルーチンを持っています: ch := make(chan int, 100) go func(){ for { ch <- do_stuff() } }() このようなゴルーチンを止めるにはどうすればいいですか?
102 go  goroutine  channels 

4
ゴルーチンからの戻り値のキャッチ
以下のコードは、「予期しない実行」というコンパイルエラーを示します。 x := go doSomething(arg) func doSomething(arg int) int{ ... return my_int_value } goroutineを使用せずに、関数を正常に呼び出すと、戻り値をフェッチできることはわかっています。または、チャンネルなどを使用できます。 私の質問は、なぜこのような戻り値をゴルーチンからフェッチできないのかということです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.