2017年4月17日のブックマーク (1件)

  • Goでコルーチンを再現する方法

    質問の "コルーチン" がコルーチンが一般に表す概念である ユーザ (プログラマ) が yield を明示的に呼ぶことである時点で処理を中断して他の処理にコントロールを移行する仕組み 逆にユーザが明示しない限りは処理が切り替わることはない, non-preemptiveな並行処理の仕組み のことを指すのであれば、goroutine はユーザが処理の切り替わりのタイミングや次に実行されるべき処理を明示的に指定することはできないので"コルーチン"ではないですし、コルーチンを実現するには現在の処理の実行状態(スタックとかコードの実行位置など)をどこかに保存する仕組みが必要なのでそのような仕組みが処理系に用意されていなければユーザがライブラリをいくら工夫しても実装できないので、Go では"コルーチン"は実現できないというのが答えかと思います。 もし質問のコルーチンの意図が、「関数の実行を途中で中断

    Goでコルーチンを再現する方法
    nwpct1
    nwpct1 2017/04/17
    なるほど