리눅스 보드로 쓰는 과제인데


보드는 tcp 클라이언트고


main함수에서 recv를 계속 하고있는중


여기에 스레드 하나 생성해서 while문으로 일을하는데


서버에서 특정 명령어를 보내면, recv로 이걸 받아서 확인하고, 생성한 스레드에서 while문을 1번 도는 구조거든


내가 만든방식은 전역변수 하나 만들어서 main함수에서 명령어 recv후에 전역변수 변화시키고


스레드에서 맨밑에 while문 하나 더 만들어서 전역변수 변했는지 비교하고, 안변했으면 무한루프 돌게 했음


근데 안된다 이유가 뭐임?




대충 소스 간략화하면


전역변수 int check;


main 함수

{

recv(socket,m,1,0);

if(m=='s')

  check = 1;

}


스레드

while(1)

{

   잡다소스

   while(1)

   {

mutexlock

         if(check == 1)

        {

          check = 0;

      unlock

            break;

         }

   }

}




여기서 스레드 check ==1 쪽이 못넘어감

메인함수 if(m=='s')쪽도 printf로 check가 1로 변하는거 확인했는데

다른방법이 있으면 제발 조언좀여