[쏠라리스] thread상에서의 srand48과 drand48의 안정성
별로 글도 않올리다가... 도움이 필요해서 글 올립니다.
현재 Thread에서 시뮬레이션 프로그램을 작성하고 있습니다.
srand48( seednum ) ; 으로 설정을하고 drand48()을 이용해서 난수를 발생하는데요
seed번호를 설정하고 만개를 돌리고 다시 seed번호를 설정하고 만개를 돌렸을때
일반 프로그램에서는 같게 나오는데 thread상에서 도니.. 다른값이 나옵니다. 파일로 생성된 난수를 추출해 보니
처음에는 같은 난수를 발생하다가 도중에 흐트러지는 결과를 보였습니다.
glibc에서는 drand48은 global변수로 drand48에 대한 정보를 저장하고 있고 그렇기 때문에 불안정하고 그래서 drand48_r을 제공하고 있습니다.
쏠라리스에서는 drand48_r이 없고 drand48의 manpage를 보면
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| MT-Level | Safe |
|_____________________________|_____________________________|
라고 나와있긴 한데.. 이것이 therad상에서 falut가 없다는 것인지 아니면 값에 대한 안정성은 고려가 되지 않은것인지...
우문에 현답 부탁드리겠습니다.
멀티쓰레드에서도 잘
멀티쓰레드에서도 잘 작동한다는 의미입니다.
쓰레드상에서 fault도 없고 값도 안정적이라는 의미이지요.
댓글 달기