0
我c寫程序測試並行線程(使用的cygwin)我期待的結果是簡單並行線程PROG與cygwin的(意外的結果)
線程1 線程1 螺紋2 螺紋2 線程1 。 ...
或附近的告訴我,在平行 兩個線程工作,但結果是任何東西 線程1 線程1 線程1 線程1 線程1 線程2 線程2 線程2 線程2 線程2 T1 = 0,T2 = 0
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *funa();
void *funb();
int main()
{
//create thread
pthread_t thread1, thread2;
int T1=pthread_create(&thread1, NULL, funa, NULL);
int T2=pthread_create(&thread2, NULL, funb, NULL);
//join thread
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
//return 0 if sucess
printf("T1=%d , T2=%d",T1,T2);
exit(0);
}
void *funa()
{int i;
for (i=0;i<5;i++)
printf("thread 1\n");
}
void *funb()
{int j;
for (j=0;j<5;j++)
printf("thread 2\n");
}
你爲什麼期待?除非用某種類型的鎖強制執行,否則不應該期待任何順序。地獄,線程1可能在線程2開始之前就已經完成了。 – xaxxon
我同意@xaxxon,你不應該期待任何與打印排序有關的行爲。有可能你會看到線索5五次,然後線索1五次。你沒有保證。唯一你知道的是,你會看到五個線程1語句和五個線程2語句 – MadDogMcNamara
謝謝xaxxon MadDogMcNamara – user2505841