• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

9:30초 최적화 질문입니다.

22.02.04 00:10 작성 조회수 151

0

쓰레드라는 프로그램을 실행을 해주는(직원)이 있는데

 

직원이 많으면 멀티 쓰레드 이다.

 

1. 번 질문

제 컴퓨터는 코어가 8개짜리라서 직원이 8명까지 배치를 해줘야 가장 효율적인것인가요?

(가령 크롬, 비쥬얼 코드 , vscode, ... 이렇게 8가지의 프로그램을 돌려야 성능에 가장 효율적이라는 것인가요??)

 

1번 질문에서 처럼 우리는 멀티 쓰레드 환경이라

 

각 쓰레드는 static변수는 공통으로 사용을 할 수있다.(접근도 가능함)

 

스택부분만을 각자의 것으로 관리를 하는데

 

_stop을 공통으로 접근이 가능하게 되어있는데

 

모드를 release로 해버리면 컴퓨터가 주인님에게 최적화를 해주기 위해서

 

주인님이 멍청하게 while문 안에다가 _stop을 빠져나갈 부분을 안 만들어 주었네? 라고 생각하고  -> if(true) 로 해서 while(true)로 해주었었다.

 

2. 번 질문

그래서 이부분을 최적화를 하면  컴퓨터가 주인님을 위해서 알아서 if문안에 while무한 루프를 만들고

 

우리는 ThreadMain 쓰레드가 아닌 Main Thread에서  _stop을 = true로(공통으로 접근이 가능하기에) 바꿔주려고 하는데 이부분에 곂침? 꼬이는 현상이 발생을 하기에

 

최적화(release 모드를)해주면 안된다는 말씀이신가요???

답변 1

답변을 작성해보세요.

0

1.

제 컴퓨터는 코어가 8개짜리라서 직원이 8명까지 배치를 해줘야 가장 효율적인것인가요?

그렇긴 한데 운영체제에서 기본적으로 실행하는 프로그램도 아주아주 많고
운영체제 커널 또한 실행되려면 코어가 필요합니다.

그리고 OS에서 각종 서비스까지 포함하면 몇백개 프로그램이 동시 실행되고 있는 상태입니다.
콘솔이나 서버 전용 운영체제 같은 극한 환경에서는
잡다한 프로그램이 많이 없고 정말 딱 필요한 애들만 최대한 띄웁니다.

2.
release모드를 하면 '안'된다는 아니구요
release 모드 빌드로 하면 속도가 더 빠르기 때문에
실제 배포 버전은 release로 하는게 맞습니다.

다만 그에 따른 문제들을 인지해서 고쳐야 한다는 것이죠.

starkshn님의 프로필

starkshn

질문자

2022.02.05

네 감사합니다 :)