atomic stack 문제...

자료구조 Stack 만들기 문제-object님 포스팅
자료구조 Stack 만들기 문제-sikuru님 포스팅

컴퓨터 프로그래밍 전공이 아니신 분은 back을 눌러주세요... ㅈㅅㅈㅅ

질문은 atomic inc/dec/exhange 만 가지고 thread-safe 인 stack을 만들어라..인데요.
queue에서는 read 부분과 write 부분이 다르니까 쉽습니다만, stack에서는 같은 메모리에 대해 접근을 하는 경우가 생기기 땜시 고민이 됩니다...

만일 atomic test (= check+set )명령이 있다면 (즉, 0인지 check 해서 0이면 1로 만들면서 1리턴, 0이 아니면 아무짓 안하고 0리턴 하는 명령) 메모리 접근 중이라는 flag 하나를 쓰면 되겠지만...
아니 그럼 atomic inc/dec 를 쓸 필요가 없잖아! OTL

atomic exchange에 뭔가 해답이 있을 것 같은데 말이죠.

.... (잠시 구글링 중)

구글 사마 만세 !!!
http://www.bluebytesoftware.com/blog/2005/05/10/InterlockedStack.aspx

저 포스팅에서는 뭔가 atomic increment가 몇개 들어가 있는데... (용도는 잘 모르겠습니다만)

간단히 말해서...
push에서는 추가된 데이터가 수정되지 않았을때 atomic으로 머리 포인터를 바꿔치는 것이고
pop에서는 뽑아낼 데이터가 수정되지 않았을때 atomic으로 머리 포인터를 바꿔치는 것으로 보입니다.



이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 클랴 | 2008/02/12 18:50 | 개발과 삽질 | 트랙백 | 덧글(3)

트랙백 주소 : http://cloudree.egloos.com/tb/3616744
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by Sikuru at 2008/02/12 20:06
C# 에서는 lock() 구문의 크리티컬 섹션이 정말 성능저하가 드라마틱하더군요 orz
필히 자주 써야하는 부분은 무리해서라도 최대한 lock 되지 않게 해야한다는 생각이 강렬히... ㅠㅠ
Commented by 안경교도 at 2008/02/12 23:49
제목만보곤 아톰이나 기타 원자력을 동력으로 쓰는 로봇에 대한 이야긴줄 알았습니다...OTL
Commented by Ego君 at 2008/02/14 10:51
저도 Stack을 thread-safe 하게 프로그래밍 하는 법을 이제야 알았군요. OS시간때 thread-safe하는 방법을 알았다만 자료구조중에서 Stack에서 이런 문제가 있는지를 이제야 깨달았군요. 아직도 배울 것들이 남아 있는듯 합니다.
(설명하는데 C#으로 되어있더군요. MS사직원이 써서 그런가?)

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶