디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

스레드 세이프한 관리객체 구조를 만들어봤는데...

SODMaster갤로그로 이동합니다. 2012.01.31 12:54:41
조회 77 추천 0 댓글 3
														
// TestProject.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//

#include "stdafx.h"
#include "AutoLockInc.h"
#include "CriticalSectionInc.h"
#include "SRWLockInc.h"

#include <list>
#include <algorithm>

class CData
{
public:
        CData(VOID)
        {
        }
        
        ~CData(VOID)
        {
        }
};

#define THREAD_SAFE_CODE(THREAD_SAFE, SAFE_CODE, CODE) \
        if (THREAD_SAFE) \
        { SAFE_CODE CODE }\
        else \
        { CODE }

template <bool THREAD_SAFE = true>
class CDataMgr
{
public:
        CDataMgr(VOID)
        {
        }

        ~CDataMgr(VOID)
        {
        }

        BOOL InsertData(CData* data)
        {
                THREAD_SAFE_CODE(THREAD_SAFE, 
                BaseLib::CSRWWriteLock WriteLock(mLock);
                BaseLib::CAutoLock Lock(WriteLock);
                ,

                mDataList.push_back(data);
                return TRUE;

                )
        }

        BOOL DeleteData(CData* data)
        {
                THREAD_SAFE_CODE(THREAD_SAFE, 
                BaseLib::CSRWWriteLock WriteLock(mLock);
                BaseLib::CAutoLock Lock(WriteLock);
                ,

                std::list<CData*>::iterator iter
                        = std::find(mDataList.begin(), mDataList.end(), data);
                if (iter == mDataList.end())
                        return FALSE;

                delete *iter;
                mDataList.erase(iter);

                )
        }

        struct IDataReader
        {
                IDataReader(VOID) {}
                virtual ~IDataReader(VOID) {}
                virtual BOOL Read(CData* data) = 0;
        };

        BOOL ReadData(CData* data, IDataReader& dataReader)
        {
                THREAD_SAFE_CODE(THREAD_SAFE, 
                BaseLib::CSRWReadLock ReadLock(mLock);
                BaseLib::CAutoLock Lock(ReadLock);


                CData* Data = Find(data);
                if (!Data)
                        return FALSE;

                return dataReader.Read(data);

                )
        }

private:
        CData* Find(CData* data)
        {
                std::list<CData*>::iterator iter
                        = std::find(mDataList.begin(), mDataList.end(), data);
                if (iter == mDataList.end())
                        return NULL;
                return *iter;
        }

private:
        std::list<CData*> mDataList;
        BaseLib::CSRWLock mLock;
};


int _tmain(int argc, _TCHAR* argv[])
{
        CData* data = new CData;

        CDataMgr<true> DataMgr;

        DataMgr.InsertData(data);

        struct CDataReader : public CDataMgr<true>::IDataReader
        {
                virtual BOOL Read(CData* data)
                {
                        return TRUE;
                }
        } DataReader;

        DataMgr.ReadData(data, DataReader);

        return 0;
}


매크로 인자안에 코드가 들어가 있어서 디버깅이 불편...

좋은 방법 없을까여

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 연말 모임 싫어해서 혼자 보낼 것 같은 스타는? 운영자 25/12/15 - -
AD AI 가전 디지털 모음전 운영자 25/11/27 - -
303301 난 프로그래밍을 하면서 신을 믿게 됐어 [2] 싸이의홈스틸갤로그로 이동합니다. 12.02.15 95 0
303300 1년 경력으로 연봉 3000 바라면 뺨 맞음? [11] 이직(58.151) 12.02.15 272 0
303299 횽들 질문 하나만 더 할께 ㅜㅜ 너무 황당해서 [6] ㅁㄴㅇㄹ(168.115) 12.02.15 63 0
303297 네이버 웬만한 블로그 다 뒤져도 안된다 ㅠㅠ [2] (58.75) 12.02.15 101 0
303295 이클립스 어젠 잘되더니 개색..ㅡㅡ [1] (58.75) 12.02.15 76 0
303291 신경망 구현할 줄 알면 뭐가 좋음? [3] 생각놀이갤로그로 이동합니다. 12.02.15 109 0
303289 공돌이는 이런거 보면 꼴림? [4] se1xman(110.47) 12.02.15 176 0
303287 느어렇어ㅜㄷㅎㅁ [3] 들럿갤로그로 이동합니다. 12.02.15 76 0
303286 프로그래밍 ebook 뭐 볼만한거 없음? [1] 공돌이대장갤로그로 이동합니다. 12.02.15 86 0
303281 비타 삼 y녀6디리(14.63) 12.02.15 54 0
303278 금딸 알고리즘 [1] 싸이의홈스틸갤로그로 이동합니다. 12.02.15 121 0
303276 여자 여자갤러있음? [4] (58.75) 12.02.15 89 0
303273 여기 성님들은 왜이렇게 착하심? [1] 싸이의홈스틸갤로그로 이동합니다. 12.02.15 94 0
303272 횽들 USB로 리눅스 부팅 [1] goding(221.143) 12.02.15 114 0
303270 와 어제 12학번 패기에 지릴뻔했어 나리링갤로그로 이동합니다. 12.02.15 162 0
303268 엘가드라는 맛폰겜 해본 형있음? 길가던놈갤로그로 이동합니다. 12.02.15 38 0
303266 엔씨소프트, 엔트리브소프트 인수 [1] ㅇㅇ(210.113) 12.02.15 72 0
303265 개발 5년차.. 적정연봉..얼마 받으면 될까? 역시천재갤로그로 이동합니다. 12.02.15 159 0
303264 임베 리눅 장비제어 유저랜드 프로그램으로 안 하나? [3] dot(125.128) 12.02.15 67 0
303263 요즘 닷넷 시장 어때? [1] 공돌이대장갤로그로 이동합니다. 12.02.15 113 0
303262 뭘 싸우고 있냐 리눅스든 윈도우든 편한거 쓰면 되지 [2] kukyakya(143.248) 12.02.15 75 0
303261 망고210보드 임베디드 관련 질문 (2) Brad(203.250) 12.02.15 67 0
303260 리눅스를 왜 쓰는가에 대한 고찰 [2] y녀6디리(175.253) 12.02.15 118 0
303259 망고210보드 임베디드 관련 질문 [10] Brad(203.250) 12.02.15 2464 0
303258 누가 Flip 구현좀 해줘 제발제발제발 ㅠㅠㅠ [4] 제발(121.157) 12.02.15 82 0
303257 자바스크립트 좀 봐줭 [2] ㅁㄴㅇㄹ(168.115) 12.02.15 71 0
303256 리눅스와 ms를 나누는건 라이센스 비용 딱 하나 만 봐도 [1] 올체갤로그로 이동합니다. 12.02.15 108 0
303254 (리눅스)프로세스의 실제사용자가 유효사용자와 다른 경우는 언제야??? 에이시아(203.90) 12.02.15 58 0
303253 운동선수들 도박 이모군(175.114) 12.02.15 65 0
303252 서버프로그래밍 중인데 DB관련해서 질문좀 할게요. [5] SODMaster갤로그로 이동합니다. 12.02.15 93 0
303250 메모장만드는데 질문좀.. [2] 늅늅(203.237) 12.02.15 88 0
303249 리눅스를 사용해서 제대로된 개발을 해봤어야 리눅스의 참맛을알지.. [4] 씨발라드세요갤로그로 이동합니다. 12.02.15 144 0
303248 gui vs cui [3] 서현빠돌이갤로그로 이동합니다. 12.02.15 119 0
303247 리눅스는 제대로 쓸려면 멀티 부팅 하면 안됨. ㅇㅇ [4] ☎v2.0™갤로그로 이동합니다. 12.02.15 113 0
303246 횽들아 서현이랑 사귀려면 어찌해야 하나여?? [2] 서현빠돌이갤로그로 이동합니다. 12.02.15 83 0
303245 예전에 hotmail에서 메일서버를 윈도아니고 프리비에스디썼다던데 ㄴㅇㄹ(112.136) 12.02.15 44 0
303244 맥은 BSD 계승한거져?? [1] [성대아싸]갤로그로 이동합니다. 12.02.15 84 0
303243 예전에 성능때문에 윈도우서버 안썼다지만 요새는 죄다 윈도서버 [1] ㄴㅇㄹ(112.136) 12.02.15 79 0
303242 리눅스를 쓰는데 x윈도우만 쓰면 변태인가염?? [1] 서현빠돌이갤로그로 이동합니다. 12.02.15 69 0
303241 BSD 계열 사용하다가 Linux 사용하면. ㅇㅇ ☎v2.0™갤로그로 이동합니다. 12.02.15 79 0
303240 밥은 먹고 겔질 하는거냐??? 서현빠돌이갤로그로 이동합니다. 12.02.15 51 0
303239 리눅스 머하러 쓰냐. 프리비에스디가 있는데 [1] ㄴㅇㄹ(112.136) 12.02.15 95 0
303238 리눅스 쓰는 애들 보면 대부분 윈도우 멀티부팅함 ㅋㅋ [8] ㅇㅇㅇ(58.77) 12.02.15 262 0
303237 으헝.. 도와주세염 ㅠㅠ [5] 코딩...?갤로그로 이동합니다. 12.02.15 60 0
303235 [떡밥] 횽들 심심한데 스도쿠 만드는 코드 짜봐용.ㅋㅋㅋ [3] 생물학(122.35) 12.02.15 103 0
303234 솔직히 리눅스 왜쓰냐? [9] ㅇㅇㅇ(58.77) 12.02.15 147 0
303233 성다아싸 소환 [5] C_Perl갤로그로 이동합니다. 12.02.15 70 0
303231 수학공부좀 기초부터 다시하고싶은데요.. 봉크라이시스갤로그로 이동합니다. 12.02.15 70 0
303230 내가 예전에 말이지 생물학(122.35) 12.02.15 42 0
303227 늅늅 성대아싸횽 서몬! [5] dogfootson갤로그로 이동합니다. 12.02.15 74 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2