7

各着信接続を同時に処理する Python Asyncio を利用する Python3.5 で記述されたネットワーク アプリケーションがあります。

すべての同時接続で、接続されたクライアントのデータをリストに保存したいと考えています。2 つのクライアントが同時に接続すると (可能性はあります)、両方のタスクが同時にリストに書き込もうとするため、確実に問題が発生するのではないかと心配しています。どうすればこれを解決できますか?

4

2 に答える 2

6

asyncio は、yield ポイント(await式) でのみコンテキスト切り替えを行うため、2 つの並列タスクが同時に実行されることはありません。

ただし、競合状態が引き続き発生する可能性がある場合 (具体的なコード構造によって異なります)、asyncio 同期プリミティブキューを使用できます。

于 2016-08-05T14:29:24.290 に答える