none
재현이 가능한 멀티스레드가 가능할까요??? RRS feed

  • 질문

  • 안녕하세요.

    현재 저희팀에서 멀티 코어 환경에서 제품을 개발중인데요.

    VS 환경으로 Emulator 환경을 개발하여 사용중입니다. (Multi Core 동작을 Single Thread 환경으로 수행함)

    그에 따라 Multi Core에서 발생할수 있는 다양한 시나리오를 테스트하는데는 한계가 있는데요.

    Multi Thread환경을 구축한다면 실제 Multi Core 가 동시에 수행되는 상황을 좀더 유사하게 수행할수 있는데요.

    재현성 확보의 이슈가 존재하는데 이걸 해결 못하다 보니 Multi Thread 환경의 개발 환경을 다른개발자들이 꺼리는 경향이 있스니다.

    혹시 재현성 확보를 위한 방안이 있을까요??

    제가 생각해본 방식은 Multi Thread 환경으로 구성하나 실제 모든 Thread를 Event형태로 수행하게 하여

    특정시점에는 1개의 Thread만 Valid 하고 나머지 Thread는 Waiting을 하게 하는 구조를 생각하고 있는데요.

    이 구조로 구성시 재현성이 확보가 될지에 대한 조언도 부탁드리겠습니다.

    2016년 8월 26일 금요일 오전 5:20

답변

  • 글쎄요. 그 동안 숱한 글을 읽어봤지만 멀티 스레드 문제가 '재현이 불확실'하기 때문에 어렵다는 것은 봤어도 그것을 확실히 재현한다는 것은 못 본 것 같습니다.

    멀티 스레드의 재현은 반드시 멀티 코어에서 가능한 실제 환경에 동일하게 장시간/다양하게 테스트를 하는 것이 바람직합니다. 물론, 꼼꼼한 코드 리뷰는 기본 요구 사항입니다. (참고로, 버그를 찾기 위해 넣어둔 로깅 코드때문에 재현이 잘 안되는 경우도 있습니다.)

    제 개인적인 생각이지만, 멀티 코어 동작을 Single Thread 환경으로 수행하는 것은 절대로 문제 해결에 도움이 안됩니다. 그리고, 말씀하신 Event 대기 방식은, ... 단일 스레드를 사용하는 것과 다를바 없을 것 같습니다.

    개발자들이 꺼려한다면 아직 준비가 안된 상태라고 보입니다. 그런 상황이라면 굳이 그 방향으로 끌고가는 것은 무리가 있어 보입니다. 버그 많고 성능 좋은 프로그램보다, 버그 없고 성능은 좀 낮은 프로그램 사이의 중간 값을 잘 찾는 방향으로 가는 것이 좋겠습니다.

    2016년 8월 29일 월요일 오전 1:24