게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
리눅스 쓰레드.... 뭘 놓친걸까요..
게시물ID : programmer_14468짧은주소 복사하기
작성자 : salmon
추천 : 0
조회수 : 571회
댓글수 : 18개
등록시간 : 2015/11/17 21:01:14
옵션
  • 본인삭제금지
안녕하세요.. 불과 어제 질문을 올려서 해결책을 찾은 줄 알았는데 아니었나봅니다...

제가 생각하는 로직과 코드의 결과가 왜 다른지 도저히 모르겠습니다.

제가 설명하는 부분과 코드에서 일치하지 않는 부분을 알려주신다면 감사하겠습니다...


1. counter변수를 1000씩 증가/감소시키는 function을 각각 만듭니다.
캡처.JPG

2. main에서 각각의 함수를 수행하는 쓰레드를 32개씩, 즉 64개 만듭니다. (NUM_THREADS = 32)
1.JPG
2.JPG

3. lock을 걸어주지 않았기 때문에 항상 경쟁상태에 들어가서 counter 변수가 계속 간섭을 받아 틀린 값을 출력해야 합니다.
그런데 거의 0(올바른 값)이 나오고 어쩌다 한번 틀린 값이 나옵니다.

저번에 질문을 올렸을 때는 printf의 위치때문에 고민했는데, 이제는 결과값때문에 전체적으로 고민하게 되었습니다.
create의 순서때문에 그런걸까요..?

꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호