スレッド同期を使用した番号の印刷順序
ここでは、さまざまなスレッドを使用して正しい順序で数値を出力する方法を見ていきます。ここでは、n 個のスレッドを作成し、それらを同期します。最初のスレッドが 1 を出力し、次に 2 番目のスレッドが 2 を出力する、という考え方です。 1 つのスレッドが印刷しようとすると、リソースがロックされ、他のスレッドがその部分を使用できなくなります。
例
#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t* cond = NULL; int threads; volatile int count = 0; void* sync_thread(void* num) { //this function is used to synchronize the threads int thread_number = *(int*)num; while (1) { pthread_mutex_lock(&mutex); //lock the section if (thread_number != count) { //if the thread number is not same as count, put all thread except one into waiting state pthread_cond_wait(&cond[thread_number], &mutex); } printf("%d ", thread_number + 1); //print the thread number count = (count+1)%(threads); // notify the next thread pthread_cond_signal(&cond[count]); pthread_mutex_unlock(&mutex); } return NULL; } int main() { pthread_t* thread_id; volatile int i; int* thread_arr; printf("</p><p>Enter number of threads: "); scanf("%d", &threads); // allocate memory to cond (conditional variable) thread id's and array of size threads cond = (pthread_cond_t*)malloc(sizeof(pthread_cond_t) * threads); thread_id = (pthread_t*)malloc(sizeof(pthread_t) * threads); thread_arr = (int*)malloc(sizeof(int) * threads); for (i = 0; i < threads; i++) { //create threads thread_arr[i] = i; pthread_create(&thread_id[i], NULL, sync_thread, (void*)&thread_arr[i]); } // waiting for thread for (i = 0; i < threads; i++) { pthread_join(thread_id[i], NULL); } return 0; }
出力
$ g++ test.cpp -lpthread $ ./a.out Enter number of threads: 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 ... ... ...
以上がスレッド同期を使用した番号の印刷順序の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











一般的に、同時に使用する必要があるのはヘッドフォンまたはスピーカーのいずれか 1 つだけですが、Win11 システムでヘッドフォンとスピーカーが同時に鳴るという問題が発生したと友人が報告しています。 Realtek パネルでオフにすれば問題ありません。以下を見てみましょう。 win11 でヘッドフォンとスピーカーが一緒に聞こえる場合はどうすればよいですか? 1. まず、デスクトップで「コントロール パネル」を見つけて開きます。 2. コントロール パネルに入り、「ハードウェアとサウンド」を見つけて開きます。 3. 次に、「」を見つけます。 Realtek High Definition" とスピーカーのアイコン。オーディオマネージャー" 4. [スピーカー] を選択し、[リアパネル] をクリックしてスピーカー設定に入ります。 5. 開くとデバイスの種類が表示されるので、ヘッドフォンをオフにしたい場合は、「ヘッドフォン」のチェックを外します。

同期フォルダー内の 1 つ以上のアイテムが Outlook のエラー メッセージと一致しない場合は、会議アイテムを更新またはキャンセルしたことが原因である可能性があります。この場合、ローカル バージョンのデータがリモート コピーと競合していることを示すエラー メッセージが表示されます。この状況は通常、Outlook デスクトップ アプリケーションで発生します。同期したフォルダー内の 1 つ以上のアイテムが一致しません。競合を解決するには、プロジェクトを開いて操作を再試行します。同期フォルダー内の 1 つ以上のアイテムが Outlook エラーと一致しない問題を修正する Outlook デスクトップ バージョンでは、ローカルの予定表アイテムがサーバー コピーと競合すると問題が発生する可能性があります。ただし幸いなことに、それを助ける簡単な方法がいくつかあります

MySQL は、さまざまな Web アプリケーション、エンタープライズ システムなどで広く使用されている、非常に人気のあるオープン ソースのリレーショナル データベース管理システムです。最新のビジネス アプリケーション シナリオでは、より高い可用性とパフォーマンスを提供するために、ほとんどの MySQL データベースを複数のサーバーにデプロイする必要があり、それには MySQL データの移行と同期が必要です。この記事では、MySQL のデータ移行と複数サーバー間の同期を実装する方法を紹介します。 1. MySQL データ移行 MySQL データ移行とは、MySQL サーバーでのデータ移行を指します。

win10 クリップボードの非常に便利な機能は、クロスデバイス クラウド ストレージ機能です。これは非常に便利で、ユーザーが PC デバイスとモバイル デバイスで同時にコピー アンド ペーストするのに役立ちます。設定方法は非常に簡単で、システム内のクリップボードに設定するだけです。 win10 クリップボードを携帯電話に同期する 1. まず、左下隅の [スタート] をクリックして設定を入力します。 2. 次に「システム」をクリックします。 3. 左側の「クリップボード」を選択します。 4. 最後に、右側の「デバイス間同期」で「ログイン」をクリックし、携帯電話を選択します。

スレッドの枯渇を回避するには、公平なロックを使用してリソースの公平な割り当てを確保するか、スレッドの優先順位を設定します。優先順位の逆転を解決するには、リソースを保持しているスレッドの優先順位を一時的に高める優先順位の継承を使用するか、リソースを必要とするスレッドの優先順位を高めるロック プロモーションを使用します。

C++ のスレッド終了およびキャンセル メカニズムには次のものがあります。 スレッド終了: std::thread::join() は、ターゲット スレッドが実行を完了するまで現在のスレッドをブロックします。 std::thread::detach() は、ターゲット スレッドをスレッド管理から切り離します。スレッドのキャンセル: std::thread::request_termination() はターゲット スレッドに実行の終了を要求します。 std::thread::get_id() はターゲット スレッド ID を取得し、std::terminate() とともに使用してターゲットを即座に終了できます。糸。実際の戦闘では、request_termination() によってスレッドが終了のタイミングを決定でき、join() によってメインラインでそれが保証されます。

並行プログラミングにおけるロックと同期 並行プログラミングでは、複数のプロセスまたはスレッドが同時に実行されるため、リソースの競合や不整合の問題が発生する可能性があります。これらの問題を解決するには、共有リソースへのアクセスを調整するためのロックと同期メカニズムが必要です。ロックの概念 ロックは、一度に 1 つのスレッドまたはプロセスのみが共有リソースにアクセスできるようにするメカニズムです。 1 つのスレッドまたはプロセスがロックを取得すると、ロックが解放されるまで、他のスレッドまたはプロセスはリソースへのアクセスをブロックされます。ロックの種類 Python にはいくつかの種類のロックがあります。 ミューテックス ロック (Mutex): 一度に 1 つのスレッドまたはプロセスのみがリソースにアクセスできるようにします。条件変数: スレッドまたはプロセスが特定の条件を待ってからロックを取得できるようにします。読み取り/書き込みロック: 複数のスレッドが同時にリソースを読み取ることができますが、1 つのスレッドのみがリソースに書き込むことができます。

Baidu Cloud Sync Disk を同期するにはどうすればよいですか? Baidu Cloud Sync Disk で同期するファイルを選択できますが、ほとんどのユーザーは Baidu Cloud ファイルを同期する方法を知りません。次に、エディターが提供する Baidu Cloud Sync Disk 同期方法のグラフィック チュートリアルです。興味のあるユーザーはぜひ見に来てください! Baidu クラウド同期ディスクを同期する方法 1. まずコンピュータのデスクトップに入り、[Baidu クラウド同期ディスク] アイコンを右クリックし、[設定] を選択します; 2. 次にサービス ウィンドウを展開し、[詳細設定] ページに切り替えて、 [フォルダの選択]; 3. 最後に以下のようなページに切り替わり、同期が必要なファイルにチェックを入れて[OK]をクリックします。
