나는 memroy에 정보를 저장하기 위해 dll을 쓰기 위해 많은 스레드가 동시에 데이터를 방문하기를 원하기 때문에 읽기/쓰기 잠금을 사용하여 동기화 할 수 있습니다. 그리고 나는 사용자에게 어떤 기능을 수출, 함수에서, 나는 자물쇠를 누른 다음 데이터를 얻고 을 종료하고 잠금을 해제합니다. 예를 들어,이 함수와 같습니다.두 수준의 잠금을 구현
void GetData(data)
{
//require lock
//get data
//release lock
}
내 사용자
동시에void ProcessData()
{
// do something 1
GetData(data1);
// do something 2
GetData(data2);
...
}
, 다른 스레드가 내 DLL의 호출 다른 내보내기 기능에 의해 내 DLL의 데이터를 변경할 수 있습니다, 예를 들어,이 기능에 GetData의 여러 번 호출 할 수 있습니다 , 데이터는 GetData (데이터); 및 GetData (data2); 하지만 내 사용자는 내 데이터가 ProcessData에서 절대로 변경되지 않기를 원하기 때문에 data1은이 상황에서 data2와 관련 될 수 있습니다. 그리고 난 내 DLL에 내 자물쇠를 폭로하고 싶지 않아. Thx와 같은 것을 구현할 방법이 있습니까?
적절한 언어로 질문에 태그를 답니다. –
당신이해야 할 일을 파악한 것처럼 보이기 때문에 올바른 라이브러리 인터페이스를 숙지해야합니다. 가장 좋은 대답은 플랫폼에 따라 다를 수 있습니다. 'pthread_rwlock_init' 또는'InitializeSRWLock'을 몇 가지 가능한 예제로 검색하십시오. Boost 또는 C++ 11도 도움이 될 수 있습니다. 그들이 제공하는 것을 확신하지 못합니다. 또한, 필요에 따라 rwlock이 아닌 간단한 뮤텍스를 고려할 수도 있습니다. – asveikau
확실하게 잠그는 유일한 클라이언트는 * 클라이언트 * 코드라는 것을 알았습니다. 일반적으로 문제가되지 않는 경우가 대부분입니다. –