>백엔드 개발 >Golang >새로운omic.Pointer 유형을 사용하여 잠금이 없는 무제한 대기열 구현

새로운omic.Pointer 유형을 사용하여 잠금이 없는 무제한 대기열 구현

PHPz
PHPz앞으로
2024-02-09 11:30:20876검색

새로운omic.Pointer 유형을 사용하여 잠금이 없는 무제한 대기열 구현

php 편집기 Strawberry는 오늘 여러분에게 새로운 원자형 포인터 유형을 사용하여 잠금이 없고 제한되지 않은 대기열을 구현하는 새로운 기술을 소개할 것입니다. 동시 프로그래밍에서 큐는 일반적인 데이터 구조이지만 기존 큐 구현에서는 일반적으로 스레드 안전을 보장하기 위해 잠금을 사용해야 하므로 성능 손실이 발생합니다. 새로운omic.Pointer 유형은 효율적인 동시 대기열 작업을 달성할 수 있는 잠금 없는 솔루션을 제공합니다. 아래에서는 이 새로운 구현과 그 장점 및 사용 방법을 자세히 소개합니다.

질문 내용

저는 michael과 scott의 논블로킹 큐를 구현하려고 합니다.

Go 1.19에 도입된 새로운omic.pointer 유형을 사용하려고 하는데 애플리케이션에서 데이터 경합이 발생합니다.

이것은 제가 구현한 것입니다:

으아악

데이터 경합 없이 내 앱에서 작동하는 다른 구현을 찾았지만 둘 사이의 차이점이 정확히 무엇인지 알 수 없는 것 같습니다.

도움이나 피드백을 보내주셔서 감사합니다!

해결 방법

몇 가지 사항을 변경하면 문제를 해결할 수 있는 것으로 나타났습니다.

첫 번째 변경 사항:

으아악

두 번째 변경 사항은 dequeue()반환 서명을 변경하는 것입니다.

최종 파일은 다음과 같습니다.

으아악

위 내용은 새로운omic.Pointer 유형을 사용하여 잠금이 없는 무제한 대기열 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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