1
我沒有得到任何輸出,但我期待輸出以下線程1線程2是代碼..線程同步沒有得到預期的輸出
#include<iostream>
#include<pthread.h>
using namespace std;
void* fun(void *arg)
{
char *msg;
msg = (char*)arg;
cout<<msg<<endl;
}
int main()
{
pthread_t t1,t2;
t1 = pthread_create(&t1,NULL,fun,(void*)"THREAD1");
t2 = pthread_create(&t2,NULL,fun,(void*)"THREAD2");
pthread_join(t1,NULL);
pthread_join(t2,NULL);
// sleep (2);
return 0;
}
我改變了上面的代碼
pthread_create(&t1,NULL,fun,(void*)"THREAD1");
pthread_create(&t2,NULL,fun,(void*)"THREAD2");
現在我越來越THREAD2 THREAD1但我需要THREAD1 THREAD2
現在我改變了我的代碼>
pthread_create(&t1,NULL,fun,(void*)"THREAD1");
pthread_join(t1,NULL);
pthread_create(&t2,NULL,fun,(void*)"THREAD2");
pthread_join(t2,NULL);
現在我的結果是正確的線程1線程2
我已糾正它,但現在我得到THREAD2,然後THREAD1 ...爲什麼這樣? – 2013-03-03 12:42:37
這些線程獨立運行。您無法猜測訂單。如果您希望一個在另一個之前運行(或者在創建線程之前加入一個線程),則需要某種形式的同步。 – Mat 2013-03-03 12:45:19
是在創建thread2之前,如果我正在使用thread_join它會給我正確的結果......但在之前的情況下我可以使用哪些技術? – 2013-03-03 12:50:32