ソケットとマルチスレッドに慣れるために、単純なクライアント/サーバーの例に取り組んでいます。クライアント側に 2 つのボタンを備えた単純な GUI があります。1 つ目は n ビット サイズの素数を生成し、2 つ目は最初の操作をキャンセルします (8000 ビットの素数を作成するには時間がかかるため)。
ユーザーが「生成」を押すと、クライアントは新しいスレッドを作成します。このスレッドは 2 つの新しいスレッドを作成します。1 つはサーバーへの接続を確立するためのもので、もう 1 つは GUI が「素数の生成を停止する」ことを要求しない限り何もしないためのものです。
サーバーは単に接続をポーリングします。接続が確立されると、新しいスレッドを作成して素数を生成し、その素数をクライアントに返します。
ここで私は概念的な問題を抱えています。クライアントに「プライムの生成を停止する」ボタンを実装したい場合、どうすればよいですか? 私の最初の考えは、2番目のスレッドを使用して同じソケットを使用してサーバーに接続し、「停止」するように指示することです。サーバーにクライアント要求の所有権を与えるにはどうすればよいですか? サーバーに「オーケー、クライアント A、私は現在大きな素数を作成するスレッドを実行していますが、キャンセルを要求していることがわかります」と言うにはどうすればよいでしょうか。サーバーにリクエストに対する所有権を与えるにはどうすればよいですか?