(C++ : Template) Example - Mutex와 Template

Posted by : at

Category : Cpp


template<typename T> class List
{
public:
    void push_front(const T& a)
    {
        // ...
    }
};

List<int> s;        // 전역변수, 멀티스레드에 안전하지 않음.

int main()
{
    // lock
    s.push_front(10);
    // unlock 의 절차가 필요하다.
}
template<typename T, typename ThreadModel> class List
{
    ThreadModel tm;
public:
    void push_front(const T& a)
    {
        tm.lock();
        // ...
        tm.unlock();
    }
};

class NoLock
{
public:
    inline void lock() {}
    inline void unlock() {}
};

class MutexNoLock
{
public:
    inline void lock() { // mutex something }
    inline void unlock() { // mutex something }
};

// List<int, NoLock> s;
List<int, MutexNoLock> s;

int main()
{
    s.push_front(10);
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links