ホームページ > バックエンド開発 > C++ > C 言語では、pthread_equal() 関数を使用して、2 つのスレッド ID が等しいかどうかを比較します。

C 言語では、pthread_equal() 関数を使用して、2 つのスレッド ID が等しいかどうかを比較します。

WBOY
リリース: 2023-09-22 16:29:02
転載
1251 人が閲覧しました

C 言語では、pthread_equal() 関数を使用して、2 つのスレッド ID が等しいかどうかを比較します。

pthread_equal() 関数は、2 つのスレッドが等しいかどうかを確認するために使用されます。 0 またはゼロ以外の値を返します。スレッドが等しい場合は 0 以外の値を返し、それ以外の場合は 0 を返します。この関数の構文は次のとおりです。

int pthread_equal (pthread_t th1, pthread_t th2);
ログイン後にコピー

次に、pthread_equal() が実際に何を行うかを見てみましょう。最初のケースでは、自己スレッドをチェックして結果を確認します。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pthread.h>
pthread_t sample_thread;
void* my_thread_function(void* p) {
   if (pthread_equal(sample_thread, pthread_self())) { //pthread_self will return current thread id
      printf("Threads are equal</p><p>");
   } else {
      printf("Threads are not equal</p><p>");
   }
}
main() {
   pthread_t th1;
   sample_thread = th1; //assign the thread th1 to another thread object
   pthread_create(&th1, NULL, my_thread_function, NULL); //create a thread using my thread function
   pthread_join(th1, NULL); //wait for joining the thread with the main thread
}
ログイン後にコピー

出力

Threads are equal
ログイン後にコピー

次に、2 つの異なるスレッド間を比較すると、結果がわかります。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pthread.h>
pthread_t sample_thread;
void* my_thread_function1(void* ptr) {
   sample_thread = pthread_self(); //assign the id of the thread 1
}
void* my_thread_function2(void* p) {
   if (pthread_equal(sample_thread, pthread_self())) { //pthread_self will return current thread id
      printf("Threads are equal</p><p>");
   } else {
      printf("Threads are not equal</p><p>");
   }
}

main() {
   pthread_t th1, th2;
   pthread_create(&th1, NULL, my_thread_function1, NULL); //create a thread using my_thread_function1
   pthread_create(&th1, NULL, my_thread_function2, NULL); //create a thread using my_thread_function2
   pthread_join(th1, NULL); //wait for joining the thread with the main thread
   pthread_join(th2, NULL);
}
ログイン後にコピー

出力

Threads are not equal
ログイン後にコピー

以上がC 言語では、pthread_equal() 関数を使用して、2 つのスレッド ID が等しいかどうかを比較します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート