pthread mutex 관련 질문이요

msjee의 이미지

간단한 멀티쓰레딩에서 락 사용법 질문드려요.

4개의 쓰레드가 크리티컬섹션 한부분에 들어가려고 하는데 거기엔 락이 1개 걸려있습니다.

제가 알고싶은건 락이 제대로 작동하는지를 알고싶거든요

그래서 해본것이

return_val = (pthread_mutex_lock(&mymutex));
	 printf("return_val: %d\n", return_val); 

이거인데 리턴벨류가 항상 0이나오는거같거든요.

락이 제데로 작동되면 1개의 쓰레드가 락을 걸면 나머지 3개는 락이없어서
리턴벨류를 프린트 해야되는거아닌가요?

지금 든생각인데 프린트도 크리티컬 섹션 안쪽이라 프린트를 못하나요? --;;

어떻게하면 락이 제데로 작동하는지 알 수 있죠?

그리고

질문이 또하나 있는데요..

pthread_mutex_t mymutex[3];
return_val = (pthread_mutex_trylock(&mymutex[i]));

이런거도 말이 되는건가요?
제가 하고싶은건
쓰레드가 주어진 일을 할때마다 랜덤한 i 를 주고요
같은 i를 가진 쓰레드만 못들어가게 하고싶거든요.
예)
t1 i=1
t2 i=2
t3 i=1
t4 i=0

이런상황에서 t1,t2,t4 나 t2,t3,t4 만 동시에 되고

t1 과 t3 중 먼저온거만 크리티컬 섹션에 들여보내고 싶거든요.

감사합니다.