C++에서 QT API를 사용했지만 QT를 사용해 본 경험이 없어도 응답이 효과적 일 수 있다고 상상해보십시오.멀티 스레드 프로그램에서 사용중인 API의 비 재진입 기능
QT는 재진입이 아닌 것으로 지정된 setContent()라는 XML 처리 클래스에 함수를 포함합니다. setContent()를 호출하면 XML 파일을 메모리로 읽어 데이터 구조로 반환합니다.
이해할 수 있듯이 비진복 함수는 다른 파일/개체에서 작동하도록 함수가 호출 되더라도 여러 스레드에서 동시에 호출하는 것이 안전하지 않은 함수입니다.
그래서이 사실을 바탕으로,이 함수를 사용하여 XML 파일을 여는 스레드가 두 개 이상있을 수는 없다는 것을 이해할 수 있습니다. 두 스레드 모두 setContent() 함수에 동시에 액세스 할 수 없으면 .
이 정보가 맞습니까? 그렇다면 직관적으로 멀티 스레딩 문제를 일으킬 수있는 기능처럼 보이지 않으므로 API를 작성하는 것이 좋지 않은 것처럼 보입니다. 또한 뮤텍스는 전혀 제공되지 않습니다 (the API).
내 멀티 스레드 프로그램에서 두 개 이상의 스레드가 다른 XML 파일을 열 때이 함수를 사용하려면 setContent() 함수에 대한 액세스를 처리하는 가장 좋은 방법은 무엇입니까? XML에 액세스 할 모든 파일에 포함 된 헤더 파일에 extern mutex를 만들어야합니까?