ถามเกี่ยวกับ pthread หน่อยครับ

ตอนนี้ผมลองเขียน pthread ใน VMWare ใช้ ubuntu 12.04.5

ปรากฏว่า มันไม่รันสลับกันเหมือนตัวอย่าง ในตัวอย่างมันจะรันสลับกันไปมา แต่ output ที่ผมได้นี้เรียงกันเลยครับ

เรียงเป็น

2 0
2 1
2 2
.
.
.
2 99
1 0
1 1
1 2
.
.
.
1 99

ทั้งที่มันควรจะสลับกัน หาตาม google แล้ว แก้ตามแล้วก็ไม่ได้

#include <pthread.h>
#include <stdio.h>
#define NUM_THREADS     5

int ch = 1;
unsigned long c = 0;

void *PrintHello1(void *threadid) {
   for(int i=0 ; i<100 ; i++){
      printf("1 %d\n",i);
   }
   pthread_exit(NULL);
}

void *PrintHello2(void *threadid) {
   for(int i=0 ; i<100 ; i++){
      printf("2 %d\n",i);
   }
   pthread_exit(NULL);
}


int main (int argc, char *argv[]) {
   pthread_t t1,t2;
   int rc, t;
   
   if (rc = pthread_create(&t1, NULL, PrintHello1, (void *)t)){
         printf("ERROR; return code from pthread_create() is %d\n", rc);

   }

   if (rc = pthread_create(&t2, NULL, PrintHello2, (void *)t)){
         printf("ERROR; return code from pthread_create() is %d\n", rc);

   }
   pthread_join(t1,NULL);
   pthread_join(t2,NULL);

   pthread_exit(NULL);
}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่