보통 함수직렬화(?)는 어떻게 하시나요?
글쓴이: muzie / 작성시간: 화, 2010/10/19 - 11:44오전
여러 공유 변수에 접근하는 함수가 있고, 이 함수는 리턴이 되기전에 또 호출이 될 수 있는 상황일때
어떤식으로 동기를 맞추시는지요?
그냥 생각했을때에는
1. 함수에서 공유변수 접근하는 부분만 mutex로 막아준다.
2. 함수호출을 직접적으로 하지 않고 메세지큐등을 사용해서 한번에 하나의 함수만 호출되도록 만든다.
정도의 방법이 있을 것 같은데.. 여러분들은 어떻게 하시는지 궁금합니다.
요새 은근 이런거 신경을 많이 써야하는 프로그램을 자주 짜네요.. -_-;
Forums:
두 가지 다 좋지만
다른 모듈로 떼어내는게 좋지 않나요? 여러 공용 변수 사용하는 부분이라면 위험할텐데
공용 변수가 중요한 내용이라 깨지지 않길 바라면 해당 공용변수에만 접근하는 하나의 쓰레드로 떼어낸 후 큐로 접근하는게 좋고
그렇지 않다면 공용변수들에 각각 atomic 연산 지원되도록 하고 lock 을 안 잡고 성능위주로 프로그래밍하는 것도 좋구요
-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr
댓글 달기