2008년 02월 12일
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으로 머리 포인터를 바꿔치는 것으로 보입니다.
자료구조 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)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
필히 자주 써야하는 부분은 무리해서라도 최대한 lock 되지 않게 해야한다는 생각이 강렬히... ㅠㅠ
(설명하는데 C#으로 되어있더군요. MS사직원이 써서 그런가?)