Java 開発者であり、Python 言語の学習を開始しました。最近、非同期グリーンレットを使用する Python Gevent ライブラリに出会いました。Geventを使用してPythonで同期、デッドロック、ライブロックがどのように機能するか/回避されるかを誰かが説明してくれませんか。
- Java Threading には、上記の問題を防ぐ同期ブロックがあります。
Java 開発者であり、Python 言語の学習を開始しました。最近、非同期グリーンレットを使用する Python Gevent ライブラリに出会いました。Geventを使用してPythonで同期、デッドロック、ライブロックがどのように機能するか/回避されるかを誰かが説明してくれませんか。
gevent を使用して並行アプリケーションを作成することは、マルチスレッドまたはマルチプロセスを使用する場合とは異なります。これにより、同期ロジックを使用して並行アプリケーションを作成でき、一度に実行できる greenlet は 1 つだけです。
多くの greenlet を作成し、それらが同じリソースにアクセスする必要があるが、それらが協力関係を持っていない場合、一度に実行できる greenlet は 1 つしかないため、ロックを使用して共有リソースにアクセスすることを制御する必要はありません。greenlet は、実行をハブgreenlet に引き渡すことができるいくつかの操作に遭遇するまで、それが戻るまで常に実行されます。
作成した greenlet に連携関係がある場合は、gevent が提供するロックを Java での使用方法として使用できます。
以下に、役立つリソースをいくつか示します。