• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

쓰레드편을 보다가 궁금증이 생겨서 질문드립니당.

23.02.09 23:39 작성 23.02.09 23:41 수정 조회수 314

0

  1. 리눅스 환경에서 구조체내에 int a, b, c가 있고, 메인 영역에서 while상태로 함수1을 구조체로 포인터로 매개변수를 전달하여 함수 call을 하여 a,b에 접근하여 값을 바꿔준다 가정하고,

  2. 쓰레드를 열고 그 쓰레드 내 while상태로 함수2를 똑같은 구조체 포인터로 매개변수를 전달하여 함수call하여 c의 값을 바꿔준다고 가정하면 혹시 레이스 컨디션이 일어나나요?...

서로의 함수 1은 a,b, 2는 c만을 건들지만 궁금한 점은 구조체 전체의 값을 read하고 원하는 영역만 바꾸고 구조체 전체의 값을 write하게 된다면, 함수 1과 2의 레이스 컨디션이 일어나는건지 너무 궁금하네용.. 너무 두서없이 써서 죄송합니당..

답변 1

답변을 작성해보세요.

0

아니오. 일어나지 않습니다. 정확히 같은 대상에 대한 읽기/쓰기가 일어나야 발생할 수 있습니다. 같은 구조체 객체라고하지만 각 스레드가 구조체 멤버중 서로 겹치지 않게 접근하고 있으므로 문제되지 않습니다. 그리고...죄송할 일이 아닙니다. 마음쓰지 마시기 바랍니다. 감사합니다. ^^

채널톡 아이콘