メインスレッドを使用して結果を出力する単純なプログラムをCで作成しようとしていますが、スレッドを作成するときにスレッドIDを確認すると、結果を印刷するときに2つの異なるIDが表示されます。これが私のコードです:Cx
#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <time.h>
#include <sys/time.h>
void *Utskrift(void *simpleInt)
{
int simple;
simple = (int)simpleInt;
/*Printing my result and thread id*/
printf(";Hello From Thread ! I got fed with
an int %d! AND it is THREAD ::%d\n",simple,pthread_self());
}
main(){
pthread_t thread_id;
int test=2;
/*Using main thread to print test from method Utskrift*/
pthread_create (&thread_id, NULL,&Utskrift,(void *) test);
/*Taking look at my thread id*/
printf(" (pthread id %d) has started\n", pthread_self());
pthread_join(thread_id,NULL);
}
私はスレッドプログラミングとCも初めてです。だから私は誤解したかもしれませんpthread_create (&thread_id, NULL,&Utskrift,(void *) test);
。メインスレッドを使用してメソッドを呼び出しUtskrift
て結果を出力しますか、それともメインスレッドに新しいスレッド「子」を作成してから子が結果を出力しますか?もしそうなら、メインスレッドを使用して私の「テスト」を印刷する方法を説明していただけますか。
出力:
(pthread id -1215916352) has started ;Hello From Thread ! I got fed with an int 2! AND it is THREAD ::-1215919248