x265多線程-鎖

  • Lock類是對互斥量的一層對象化包裝
  • ScopedLock類是模仿C++ lock_guard自定義的區間鎖,作用同lock_guard一模一樣

lock

/*
	對互斥量的一層包裝
*/
class Lock
{
public:

	// 初始化互斥量
    Lock()
    {
        pthread_mutex_init(&this->handle, NULL);
    }

	// 銷燬互斥量
    ~Lock()
    {
        pthread_mutex_destroy(&this->handle);
    }

	// 對互斥量加鎖
    void acquire()
    {
        pthread_mutex_lock(&this->handle);
    }

	// 釋放互斥量
    void release()
    {
        pthread_mutex_unlock(&this->handle);
    }

protected:

    pthread_mutex_t handle;	// 互斥量
};

ScopedLock

/*  模擬lock_guard,
	創建時自動加鎖
	超出ScopedLock的作用域,被析構
	析構自動解鎖 */
class ScopedLock
{
public:

	// 被構造時對lock自動加鎖
    ScopedLock(Lock &instance) : inst(instance)
    {
        this->inst.acquire();
    }

	// 析構時對lock自動解鎖
    ~ScopedLock()
    {
        this->inst.release();
    }

protected:

    // do not allow assignments
    ScopedLock &operator =(const ScopedLock &);

    Lock &inst;	// 鎖
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章