공돌이는 파닥파닥

위 코드는 중간중간 수정해서 컴파일이 안될 수 있는데, 얘기하고자 하는 바는

tbb를 이용하여 스레드를 돌리고 boost를 이용해 conditional variable을 사용한 경우

pthread를 이용한 것과 같은 결과가 나온다는 것이다.

*심지어 프로세스가 terminate도 되지 않는다.

그래서 나온 코드.

원하는 대로 잘 돌아 간다.

마지막에 delete를 안했는데, 뭐.. 크게 상관은 없는 듯.

오히려 포인터를 이용한 new가 아니라 지역변수로 잡고 그 주소를 넘긴 경우

희안하게도 ~thread()에서 같은  공간을 delete 한다며 SIGART가 뜬다.


이 모든 것은 멀티스레드 환경에서 conditional variable과 queuing lock을 사용하기 위함...

boost에서 lock이 lock_free() 혹은 only local spinning인지 알 수가 없으므로..


Comment +0