>백엔드 개발 >Golang >mmap 할당 슬라이스 패닉에 쓰기

mmap 할당 슬라이스 패닉에 쓰기

WBOY
WBOY앞으로
2024-02-09 09:00:12792검색

写入 mmap 分配的切片会发生恐慌

PHP 편집기 Strawberry는 "mmap으로 할당된 슬라이스를 작성할 때 패닉이 발생합니다"라는 문제를 소개합니다. mmap을 사용하여 메모리를 할당할 때 쓰기 작업이 동시에 수행되면 메모리 할당 패닉이 발생할 수 있습니다. 이 경우 프로그램에 예측할 수 없는 오류가 발생하거나 프로그램이 중단될 수도 있습니다. 따라서 mmap을 사용하여 메모리를 할당할 때는 동시 쓰기 작업을 피하도록 주의하거나 다른 메모리 할당 방법을 사용하여 이 문제를 피해야 합니다. 다음으로, 이 문제를 자세히 분석하고 그에 맞는 솔루션을 제공하겠습니다.

질문 내용

실시간 스트리밍 데이터를 파일 기반 메모리 매핑 영역에 캐시하는 시나리오입니다. 목표는 mmap를 사용하여 상태 내결함성을 만드는 것입니다.

애플리케이션에서 mmap를 사용하면 Redis 키-값 저장소에 의존하지 않게 됩니다.

절차는 다음과 같습니다.

으아악 으아악

mmap[0] = 'X'가 파일에 데이터를 쓸 수 없나요? mmap[0] = 'X' 无法将数据写入文件?

解决方法

您的文件是空的,因此您的切片也是空的。您必须首先为文件分配一些字节,然后尝试更改从 mmap.Map()mmap.MapRegion()

해결 방법

initFile() 中创建的文件不是人类可读的,您可以制作一个固定大小的字符串,然后将其写入文件,这样您的 mem파일이 비어 있으므로 슬라이스도 비어 있습니다. 먼저 파일에 일부 바이트를 할당한 다음 mmap.Map() 또는 mmap.MapRegion()에서 얻은 슬라이스를 변경해야 합니다.

으아악 🎜 🎜 내의 콘텐츠는 사람이 읽을 수 있다는 점에 유의하세요🎜

위 내용은 mmap 할당 슬라이스 패닉에 쓰기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제