2010-05-02 2 views
0

this question의 설명에 이어지는 설명을 계속합니다.CAS를 사용하지 않고 스핀 록을 작성하는 방법

CAS 작업없이 Spinlock을 작성하는 방법은 무엇입니까? 다른 문제 상태로

:

메모리 순서화 모델은 쓰기 원자 것이라고 예이다 (두 개의 동시 스레드가 동시에 메모리 위치를 작성하는 경우, 그 결과는 하나 또는 다른 것). 플랫폼은 원자 비교 및 ​​설정 작업을 지원하지 않습니다.

답변

2

spinlock에 대한 위키 백과의 기사는 당신이 (필요한 경우) 임계 영역을 입력 할 수있는 프로세스의 차례 표시하기 위해 다른 플래그를 사용하는 Peterson's algortihm 같은 알고리즘을 사용해야합니다 말한다.

+0

스레드 당 하나의 변수 선언이 필요합니다. 이 문제는 필요한 수천 개의 스레드와 그 중 알 수없는 수에서 비롯된 것입니다. 이것은 아마도 실행 가능한 솔루션이 아니라는 것을 의미합니다 : ( – Martin

+0

True. 또한 스레드는 본질적으로 원래의 질문이 무엇을 결정하려고 시도했는지 알 수있는 원자 적으로 쓰기 가능한 플래그를 알아야합니다. 스레드를 만든 모든 항목의 ID와 해당 작성자의 일련 번호와 같은 ID가 포함 된 스레드 –

+0

이것을 허용 할 다른 방법이없는 것처럼 보입니다 – Martin