gcc 컴파일 최적화

graftker의 이미지

궁금한게, pthread를 사용할 때는 최적화 옵션을 주면 loop에 빠지던데

pthread 사용시에 최적화하는 방법이 있을까요?

pchero의 이미지

최적화 옵션여부에 따라서 pthread 가 loop 에 빠진다는 현상은 이해하기가 힘드네요.

어떤 소스로 테스트 하셔서 어떤 현상이 나왔나요?

---------------------------------
제일 왼쪽이 저입니다 :)

kaeri17의 이미지

일종의 heigenbug가 아닐까 생각됩니다..

jick의 이미지

소스가 없으니 원론적인 얘기밖에 할 수 없어서 죄송합니다만, 숨겨진 버그가 있는데 최적화 옵션을 키면 버그가 보이는 것이고, 버그를 잡으시면 해결됩니다.

mirheekl의 이미지


타이밍 문제이든지. 변수 초기화를 제대로 하지 않았는데 운좋게 최적화를 껐을 땐 적당한 값이 들어갔다든지. 사용되지 않는 변수를 초기화했는데 그게 다른 메모리 영역을 침범해서 운좋게 적당한 값을 넣어줬든지 등등등...

그 상태에서 버그를 잡는 것이 맞는 방법이라 봅니다.

--

gilgil의 이미지

만약 아래와 같은 구조라면

int flag = 0;
 
first_thread()
{
  while (flag == 0)
  {
    ...
  }
}
 
second_thread()
{
  ...
  flag = 1;
  ...
}

변수 앞에 volatile을 선언해 보세요.