Go의 sync.Map
에 문제가 있습니다. 아래는 세부 사항은 다음과 같습니다 Go 동기화 맵의 동시 처리 문제
var MySyncGlobalMap = sync.Map{}
및 이벤트에 나는 map[int64]map[string]interface{}
으로 의도 된 구조로이지도를 채 웁니다. 그래서 기본적으로 동기화 맵 을 int64
키로 설정하고 또 다른 동기화 맵 값을 map[string]interface{}
으로 채 웁니다. 다음은지도를 채우는 방법입니다.
이제이지도에 액세스하고 일부 작업을 수행 할 여러 스레드가 있습니다. 내부 동기화 맵에 대한 지속적인 업데이트가 있습니다. 처리가 내부 동기 맵의 키에서 완료되면 해당 키가 해당 맵에서 삭제됩니다.
일단 내부 동기화 맵이 비면 작업이 완료되었음을 알게 될 것입니다.
내가 패닉 수신이지도를 액세스하는 여러 스레드가 이제부터 : 난 아직도 심지어 동기지도 사용 후 나는이 문제에 직면 오전 궁금
Fatal error: concurrent read and write
가.
내가 뭘 잘못하고 있다고 지적 할 수 있습니까?
오류를 나타내는 코드 샘플을 제공해주십시오. 예를 들어'make (map [string] interface {}')를 사용하여 보통의 맵을 만들고 동시에 접근하는 것 같아요 –
@ArmanOrdookhani가 질문을 업데이트했습니다 –
''recSet'은 어떤 goroutine간에 공유됩니까? 'run -race main.go'와 같은 코드를 실행하여 동시에 맵에 액세스하는 위치의 스택 추적을 얻으십시오. –