CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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)해주면 잘 되는데 말이죠...
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.