goroutine

    14

    3答えて

    最近私のオペレーティングシステムクラスのスレッドについて多くのことを話していましたが、1つの質問が私の心に浮かんできました。 Go(およびJava)はカーネルスレッドの代わりにUser-spaceスレッドを使用しているため、OSはCPU時間をプロセスにのみ割り当てているため、複数のコアを効果的に利用することはできません。スレッド自体? Javaスレッドとの1対1のマッピングが必ずしも存在しないが、

    8

    2答えて

    ゴルーチンが特定のOSスレッドでのみ実行されるようにする方法はありますか?たとえば、GUI操作をGUIスレッドで実行する必要があるが、GUIコードを実行する複数のゴルーチンがある場合などです。 GOMAXPROCS(1)技術的にはジョブを実行しますが、それはマルチスレッドの目的に反するものです。 LockOSThread()でも動作しますが、他のゴルーチンもそのスレッドで実行されることはありません

    1

    2答えて

    私は、次の3つの方法で入力のいくつかの種類を解析していたとします func parseHeader ([]byte) []byte func parseBody ([]byte) []byte func parseFooter ([]byte) []byte 彼らはすべて同じ入力の特定の部分を解析し、[]byteとしてそれを返すので、彼らはこのように使用することができます。 i := []

    8

    3答えて

    私が今まで見たすべての例は、結果を得るためにブロックすることを含んでいます(<-chan演算子経由)。 私の現在のアプローチは、構造体へのポインタを渡す必要:ゴルーチンが完了した時点で書き込み type goresult struct { result resultType; finished bool; } 。都合の良いときにはいつでもfinishedをチェックするのは

    0

    1答えて

    私は、この論理的なコードは、状況を毎回デッドロックできます以下のような3つの同時ゴールーチン、 func Routine1() { mutex1.Lock() do something mutex2.Lock() mutex3.Lock() send int to routine 2 send int to routine 3