멀티쓰레드상 동기화 문제에 대한 질문입니다.
글쓴이: muzie / 작성시간: 화, 2010/03/02 - 5:00오후
global int val; func a() { if (statement == val) val = 10; else if (statement == val) val = 20; .. .. }
func a는 멀티쓰레드로 도는 모듈에서 호출되는 함수입니다.
이 경우에 val 값에 대해서 lock을 걸어줘야 할런지요?
그냥 생각했을때 statement A일때를 처리하여 10을 어사인 하기 전에
func a가 다시 호출되었고 그 때의 statement가 B였다면
기대값이 달라질 수도 있으리라 생각됩니다만..
lock을 해줘야할까요?
Forums:
val을 read/write 하는
val을 read/write 하는 곳은 전부 막아줘야 합니다.
그렇지 않으면 다른 쓰레드에서 변경된 값이 영향을 주겠죠.
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
댓글 달기