| [ CnUnix ] in KIDS 글 쓴 이(By): picaso (피카소) 날 짜 (Date): 2002년 3월 7일 목요일 오후 04시 47분 02초 제 목(Title): [Q] linux와 solaris에서 thread의 차이 #include <unistd.h> #include <pthread.h> pthread_mutex_t l = PTHREAD_MUTEX_INITIALIZER; void * loop1(void *a) { for(;;) { //usleep(1); pthread_mutex_lock(&l); fprintf(stderr,"1"); pthread_mutex_unlock(&l); } return NULL; } void * loop2(void *a) { for(;;) { //usleep(1); pthread_mutex_lock(&l); fprintf(stderr,"2"); pthread_mutex_unlock(&l); } return NULL; } int main() { pthread_t t1, t2; pthread_create(&t1, NULL, loop1, NULL); pthread_create(&t2, NULL, loop2, NULL); for(;;) { pause(); } } 이렇게 하면 linux에서는 t1, t2가 돌아가면서 mutex를 잡고 12112211122121 이런식으로 잘 찍는데 왜그런지 solaris에서 111111111111 만 찍히네요... mutex잡기 전에 usleep(1)해주면 잘 되는데 말이죠... |