ジェネリックを使用して Golang の同時実行の問題を解決します。ジェネリックを使用すると、型を指定せずに関数と構造を定義できるため、スレッドセーフなデータ構造が作成されます。例: 汎用キュー Queue[T] を定義します。ここで、T は要素タイプを表します。 sync.Mutex を使用してキューを同時アクセスから保護します。 Push() メソッドと Pop() メソッドを使用して、キューに要素を安全に追加および削除します。このキューの例を main 関数で使用します。
ジェネリックを使用して Golang の同時プログラミングの問題を解決する方法
ジェネリックを使用すると、次のことが可能になります。具体的な型を指定せずに関数と構造体を定義します。これにより、より柔軟で再利用可能なコードを作成できるようになります。
Golang の同時実行の問題には、通常、共有リソースへの同時アクセスが関係します。ジェネリックスを使用してスレッドセーフなデータ構造を作成し、データ競合やデッドロックを回避できます。
コード:
import ( "sync" ) type Queue[T any] struct { items []T lock sync.Mutex } func (q *Queue[T]) Push(item T) { q.lock.Lock() defer q.lock.Unlock() q.items = append(q.items, item) } func (q *Queue[T]) Pop() (item T, ok bool) { q.lock.Lock() defer q.lock.Unlock() if len(q.items) == 0 { return item, false } item = q.items[0] q.items = q.items[1:] return item, true }
使用例:
リーリー以上がジェネリックスを使用して golang の同時プログラミングの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。