2010-02-17 4 views
0

DAO를 통해 Jet 데이터베이스를 사용하는 C++ 응용 프로그램이 있습니다. 대형 쿼리는 Vista를 통해 잘 작동하지만 멀티 코어 컴퓨터에서는 Win7에서 작동하지 않습니다. 나는 제트 3.5와 4.0을 모두 시험했다. 둘 다 실패합니다. prog (내 앱) 호출에서 스레드 비활성화를 시도했지만 여전히 실패합니다.Win7 멀티 코어에서 DAO 대용량 쿼리 잠금

+0

세부 사항 : 각 OS, 샘플 SQL, 테이블 크기 등의 Jet 및 버전 –

답변

0

SetProcessAffinityMask(1<<GetCurrentProcessorNumber())을 호출하는 것은 현재의 코어에만 자신을 제한하는 다소 무거운 강제 방법입니다. 하지만 디버거를 사용하여 왜 잠금 상태인지 판단하는 것이 더 좋습니다. 어느 두 스레드가 교착 상태입니까?

+0

감사합니다. 잘 작동합니다. MajorVersion 6 이상의 OSVERSIONINFO를 확인한 다음 NumberOfProcessors 2 이상에 대해 SYSTEM_INFO를 확인합니다. 그런 다음 난수를 사용하여 CPU를 선택하여 가능한 최선의 부하를 분산시키고 CurrentProcess와 해당 CPU에 대해 SetProcessAffinityMask를 선택합니다. – MighMoS

+0

문제의 세부 사항에 대해서는 DAO만의 문제가 아니라는 것을 알았습니다. OleDb (Provider = Microsoft.Jet.OLEDB.4.0)를 통해 쿼리를 제출하는 테스트 응용 프로그램을 만들었지 만 동일한 중단이 발생합니다. SELECT SUM ([Amount1]) FROM main 내 파일에 320,000 개의 레코드가 있습니다. – MighMoS

+0

결과가 다른 시스템에서 동일한 버전의 Jet를 사용하고 있습니까? –

관련 문제