궁금한게, pthread를 사용할 때는 최적화 옵션을 주면 loop에 빠지던데
pthread 사용시에 최적화하는 방법이 있을까요?
최적화 옵션여부에 따라서 pthread 가 loop 에 빠진다는 현상은 이해하기가 힘드네요.
어떤 소스로 테스트 하셔서 어떤 현상이 나왔나요?
--------------------------------- 제일 왼쪽이 저입니다 :)
일종의 heigenbug가 아닐까 생각됩니다..
소스가 없으니 원론적인 얘기밖에 할 수 없어서 죄송합니다만, 숨겨진 버그가 있는데 최적화 옵션을 키면 버그가 보이는 것이고, 버그를 잡으시면 해결됩니다.
타이밍 문제이든지. 변수 초기화를 제대로 하지 않았는데 운좋게 최적화를 껐을 땐 적당한 값이 들어갔다든지. 사용되지 않는 변수를 초기화했는데 그게 다른 메모리 영역을 침범해서 운좋게 적당한 값을 넣어줬든지 등등등...
그 상태에서 버그를 잡는 것이 맞는 방법이라 봅니다.
--
만약 아래와 같은 구조라면
int flag = 0; first_thread() { while (flag == 0) { ... } } second_thread() { ... flag = 1; ... }
변수 앞에 volatile을 선언해 보세요.
www.gilgil.net
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
최적화 옵션여부에 따라서 pthread 가 loop
최적화 옵션여부에 따라서 pthread 가 loop 에 빠진다는 현상은 이해하기가 힘드네요.
어떤 소스로 테스트 하셔서 어떤 현상이 나왔나요?
---------------------------------
제일 왼쪽이 저입니다 :)
일종의 heigenbug가 아닐까 생각됩니다..
일종의 heigenbug가 아닐까 생각됩니다..
프로그램을 잘못 짠 겁니다
소스가 없으니 원론적인 얘기밖에 할 수 없어서 죄송합니다만, 숨겨진 버그가 있는데 최적화 옵션을 키면 버그가 보이는 것이고, 버그를 잡으시면 해결됩니다.
+1
타이밍 문제이든지. 변수 초기화를 제대로 하지 않았는데 운좋게 최적화를 껐을 땐 적당한 값이 들어갔다든지. 사용되지 않는 변수를 초기화했는데 그게 다른 메모리 영역을 침범해서 운좋게 적당한 값을 넣어줬든지 등등등...
그 상태에서 버그를 잡는 것이 맞는 방법이라 봅니다.
--
gilgil.net
만약 아래와 같은 구조라면
변수 앞에 volatile을 선언해 보세요.
www.gilgil.net
댓글 달기