我想在C中使用主線程來打印結果,但當我創建線程時檢查線程ID,當我打印結果其2不同標識。這裏是我的代碼: CX打印結果與Pthread(主)C
#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
您可以發佈您的輸出? – noMAD
(pthread id -1215916352)已經開始 ; Hello From Thread!我吃了一個int 2!它是線程:: - 1215919248 –
請在這裏發佈時請正確格式化您的代碼。另外你的'(void *)測試'東西是殘酷的。在你理解的狀態下,你絕對不應該使用演員,而後來當你更堅定地使用演員時,儘可能少。如果你從某個地方複製了這樣的東西,也許改變你的來源。 –