4바이트 를 atomic하게 업데이트를 어떻게 하나요?
글쓴이: yeilho / 작성시간: 금, 2010/05/07 - 12:31오전
char array가 있는데 이중에 일부 4 바이트를 atomic하게 업데이트 하고 싶습니다.
__sync_bool_compare_and_swap() 를 사용할려구 했는데, 제가 업데이트가 하고자 하는 부분이 char 어레이라서 그런지 아래처럼 했는데 잘 안되네요.... :(
char target[20]; char _old[4], _new[4]; ... memcpy(_old, target, 4); if (!__sync_bool_compare_and_swap(target, _old, _new)) { printf("cas failed\n"); }
조언 부탁드립니다.
Forums:
[완료]
제 질문에 답변 답니다. ;)
사이즈를 지정해 주지 않아서 문제 였던것 같습니다.
코드를 아래 처럼 바꾸어주니 잘 되네요.
if (!__sync_bool_compare_and_swap((int *)target, *(int *)target, *(int *)_new)) {
printf("cas failed\n");
}
Linux rules!!!
Linux rules!!!
댓글 달기