예전에 Cocos2d-X 를 이용해서
프로젝트를 진행할 때
안드로이드 메모리 해킹에 대한 얘기가 나온적이 있었다.
이부분에 대한 대안책으로
나온것이 뮤텍스를 이용한 방법 이었다.
뮤텍스는 스레드 간에 공유가 되지 않고
임계 구역( Critical Section ) 과 비슷하기 때문에
어느정도 도움이 될거라고 생각 했었다.
사용방법은 엄청 간단하다.
일단 pthread_mutex_t 객체를 생성해 줍니다.
그다음 뮤텍스를 초기화 하고
해제 하는 코드를 작성해 줍니다.
사용하실때는 아래와 같이 해주시면 됩니다.
스레드와 관련된 뮤텍스를 사용하는 것이기 때문에..
정말 정말 정말 사용시 주의 하셔야 합니다.
Lock 과 UnLock 을 적절한 위치에 배치해야 합니다.
Cocos2d-x 에서는 pthread 객체를 사용할때
이 안에서 new 를 사용한다거나 retain 같은걸 하지 말라고
말하고 있으므로 이부분도 주의하셔서
점수 적용이나 경험치 추가 같은
값 수정을 할때만 적용하는게 좋을 것 같네요.
참조
http://www.cocos2d-x.org/wiki/How_to_use_pthread
----- Tip -----
lock, unlock 에 자신이 없으신 분들은
std::lock_guard 를 사용하시는걸 추천 합니다.
대신 std::lock_guard 은
pthread_mutex_t 객체가 아닌 std::mutex 객체를
따로 생성해서 사용하셔야 합니다.
std::lock_guard 참조글
'Programming > Cocos2D-X' 카테고리의 다른 글
[Cocos2d-X] TexturePacker 를 이용한 이미지 안 보이게 숨기기 (보안) (0) | 2015.03.30 |
---|---|
[Cocos2d-X] AssetsManager 를 이용한 패치파일 관리하는 방법 (1) | 2015.03.30 |
[Cocos2d-X] Cocos2d-x (C++) 에서 안드로이드 (Java) 로 Jni 를 이용해 함수 호출하는 방법 (0) | 2015.03.29 |
[Cocos2d-X] 안드로이드 (Java) 에서 Cocos2d-x (C++) 로 함수 호출하는 방법 (0) | 2015.03.28 |
[Cocos2d-X] 3.2 버전에서 Box2D 실행하는 방법 (0) | 2015.03.26 |