특별한 하드웨어 지침 없이 코드를 어떻게 테스트하고 동작을 설정합니까?

StackOverflow https://stackoverflow.com/questions/107184

문제

내가 찾은 대부분의 구현에는 이를 수행하기 위한 하드웨어 지침이 필요합니다.그러나 이것이 필수인지는 의심스럽습니다(만약 그렇다면 이유를 알 수 없습니다...).

도움이 되었습니까?

해결책

원하는 경우 상호 배제 잠금을 얻기 위해 테스트 및 설정 지침이 필요하지 않습니다.Dijkstra는 1965년에 내가 알고 있는 최초의 상호 배제 알고리즘을 설명했습니다.논문 제목은 "동시 프로그래밍 제어 문제 해결"이었습니다. Google에서 가까운 사본을 검색해 보세요.원래 알고리즘은 하드웨어의 특별한 지원이 전혀 필요하지 않았지만 CPU에 원자적 명령을 제공하면 성능이 크게 향상됩니다.

테스트 및 설정, 원자 스왑, 로드 링크 + 저장 조건은 모두 CPU가 제공하는 일반적인 기본 요소입니다.모두 상호 배제를 구현하는 데 사용될 수 있으며, 그런 다음 원하는 잠금 의미 체계를 구현하는 데 사용할 수 있습니다.

다른 팁

크로스아치 방식을 원하고 gcc를 사용하고 있다면 gcc의 원자 내장 기능을 사용할 수 있습니다.

http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html

이를 호출하면 현재 빌드 아키텍처에 대한 하드웨어별 기계 명령이 생성됩니다.이를 지원하지 않는 경우 컴파일이 실패합니다.(제 생각에는...)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top