안녕하세요.. 불과 어제 질문을 올려서 해결책을 찾은 줄 알았는데 아니었나봅니다...
제가 생각하는 로직과 코드의 결과가 왜 다른지 도저히 모르겠습니다.
제가 설명하는 부분과 코드에서 일치하지 않는 부분을 알려주신다면 감사하겠습니다...
1. counter변수를 1000씩 증가/감소시키는 function을 각각 만듭니다.
2. main에서 각각의 함수를 수행하는 쓰레드를 32개씩, 즉 64개 만듭니다. (NUM_THREADS = 32)
3. lock을 걸어주지 않았기 때문에 항상 경쟁상태에 들어가서 counter 변수가 계속 간섭을 받아 틀린 값을 출력해야 합니다.
그런데 거의 0(올바른 값)이 나오고 어쩌다 한번 틀린 값이 나옵니다.
저번에 질문을 올렸을 때는 printf의 위치때문에 고민했는데, 이제는 결과값때문에 전체적으로 고민하게 되었습니다.
create의 순서때문에 그런걸까요..?