POSIXスレッドとC++を使用して、一度に1つずつ安全に実行できる「挿入操作」があります。
pthread_join を使用して挿入を待機しているスレッドが複数ある場合は、終了時に新しいスレッドを生成します。それらはすべて一度に「スレッド完了」シグナルを受け取り、複数の挿入を生成しますか、または「スレッド完了」シグナルを最初に受信したスレッドが新しいスレッドを生成し、他のスレッドが新しいスレッドを作成するのをブロックすると想定しても安全ですか。
/* --- GLOBAL --- */
pthread_t insertThread;
/* --- DIFFERENT THREADS --- */
// Wait for Current insert to finish
pthread_join(insertThread, NULL);
// Done start a new one
pthread_create(&insertThread, NULL, Insert, Data);
返信ありがとうございます
このプログラムは基本的に、ソケットを介してクライアントからの要求を受け取る巨大なハッシュ テーブルです。
新しいクライアント接続ごとに新しいスレッドが生成され、そこから複数の操作 (具体的にはルックアップまたは挿入) を実行できます。検索は並行して実行できます。ただし、挿入は単一のスレッドに「再結合」する必要があります。クライアントの新しいスレッドを生成せずにルックアップ操作を実行できると言えますが、サーバーがロックされて新しいリクエストがドロップされるまでに時間がかかる場合があります。この設計では、システム コールとスレッドの作成を可能な限り最小限に抑えようとしています。
しかし、最初に考えた方法では安全ではないことがわかったので、何かを一緒に石畳にできるはずです
ありがとう