第一個單線程,有阻塞#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> void *print() { printf("I am thread\n"); } int main() { pthread_t id; pthread_create(&id,NULL,print,NULL); pthread_join(id,NULL); printf("I am main\n"); return 0; }
運行結果:
I am thread
I am main第二個單線程,無阻塞
執行結果:1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 #include <pthread.h> 5 void *print() 6 { 7 printf("I am thread\n"); 8 } 9 int main() 10 { 11 pthread_t id; 12 pthread_create(&id,NULL,print,NULL); 13 printf("I am main\n"); 14 // pthread_join(id,NULL); 15 return 0; 16 } ~
有:
I am main
和
I am main
I am thread
I am thread
等三、雙線程逐一執行
執行結果:1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 #include <pthread.h> 5 void *thread1() 6 { 7 printf("I am thread1\n"); 8 } 9 void *thread2() 10 { 11 printf("I am thread2\n"); 12 } 13 int main() 14 { 15 pthread_t id1,id2; 16 pthread_create(&id1,NULL,thread1,NULL); 17 pthread_join(id1,NULL); 18 pthread_create(&id2,NULL,thread2,NULL); 19 pthread_join(id2,NULL); 20 printf("I am main\n"); 21 return 0; 22 }
I am thread1
I am thread2
I am main四、雙線程一起執行
執行結果
I am thread2
I am thread1
I am main或
I am thread1
I am thread2
I am main五、雙線程讀寫緩衝區
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 #include <pthread.h> 5 #include<string.h> 6 char buf[50]; 7 void *twrite() 8 { 9 char *st="Hello,write"; 10 strcpy(buf+strlen(buf),st); 11 printf("write success\n"); 12 } 13 void *tread() 14 { 15 printf("read:%s\n",buf); 16 } 17 int main() 18 { 19 pthread_t id1,id2; 20 pthread_create(&id1,NULL,twrite,NULL); 21 pthread_join(id1,NULL); 22 pthread_create(&id2,NULL,tread,NULL); 23 pthread_join(id2,NULL); 24 printf("I am main\n"); 25 return 0; 26 }
執行結果:write success
read:Hello,write
I am main
linuc 多線程編程(一)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.