MTA는 이름에서 알 수 있듯이 개의 스레드가 여러 아파트에서 실행될 수 있으므로 잠금 기능이 있어야하므로 MTA는 STA보다 느려야합니다. 하나의 스레드 만 실행 중이더라도 잠금을 수행해야하므로 오버 헤드가 발생합니다. 따라서 4x STA에서 실행중인 4 개의 스레드는 스레드와 아파트가 일대일로 일치하더라도 4x MTA에서 실행되는 4 개의 스레드보다 빠릅니다. 개체에 하나 이상의 스레드를 실행하지 않으려는 경우 아파트 모드 MTA를 만들어서 아무 것도 얻지 못합니다.
네 개의 스레드가 다른 코어에서 실행될 가능성이 높을수록 프로세서 및/또는 코어를 추가하면 도움이됩니다.
그러나 스레드 수보다 많은 코어를 추가하면 이 아닌은 하나의 코어에서만 하나의 스레드 만 실행하므로 성능이 향상됩니다. 귀하의 예에서 4 개의 스레드는 4 개의 코어 (동일한 프로세서에 속해 있는지 여부)에서 실행되어야합니다. 시스템 프로그램을위한 하나 또는 두 개의 코어 (드라이버가 없다고 가정)와 드라이버를 추가하십시오. 스레드 수가 증가하지 않으면 해당 코어가 유휴 상태 일 수 있으므로 더 많은 코어를 추가하면 도움이되지 않습니다.
다른 것들도 동시성 성능에 영향을 미칩니다. 공유 리소스가 스레드 중 경합 포인트이고 스레드가이 리소스의 잠금을 항상 기다리고 있다면 코어를 추가하면 도움이되지 않을 수도 있습니다 병목 현상이 공유 리소스에 액세스하고 스레드가 유휴 대기 상태로 실행되기 때문입니다. 이 경우 클록 속도면에서 더 빠른 CPU로 업그레이드하는 것이 만족 한 리소스가 출시되는 속도를 높이기 때문에 더 빠릅니다.
다른 프로세서가 하나의 프로세서에서 내부 리소스를 공유하고 하나의 코어가 리소스를 사용하는 경우 다른 코어가 차단되므로 동일한 프로세서에 코어를 추가하는 것보다 일반적으로 프로세서를 추가하는 것이 빠릅니다.그러나 여러 프로세서가 동일한 메모리 위치에 액세스해야하고 동일한 정보를 한 프로세서의 캐시에 저장하고 모든 코어에서 공유 할 수있는 코어 추가가 더 빠르다고 들었습니다.
FYI : MTA/STA는 COM 스레딩 아파트입니다. http://msdn.microsoft.com/en-us/library/ms693344(v=vs.85).aspx –