ibm 사이트 인데 이게 갑인듯 2편 까지 있음
위 사이트를 보고 만든큐 코코스2d 작업용으로 딱임
#pragma once
#include <pthread.h>
#include <list>
template <class T>
class CC_EX_DLL BlockingQueue {
public:
BlockingQueue ( ) {
pthread_mutex_init(&_lock, NULL);
pthread_cond_init(&_cond, NULL);
}
~BlockingQueue ( ) {
pthread_mutex_destroy(&_lock);
pthread_cond_destroy(&_cond);
}
T * pop( )
{
pthread_mutex_lock(&_lock);
while (_list.empty( )) {
pthread_cond_wait(&_cond, &_lock) ;
}
T * _temp = _list.front( );
_list.pop_front( );
pthread_mutex_unlock(&_lock);
return _temp;
}
void push(T * value )
{
pthread_mutex_lock(&_lock);
const bool was_empty = _list.empty( );
_list.push_back(value);
pthread_mutex_unlock(&_lock);
if (was_empty)
pthread_cond_broadcast(&_cond);
}
private:
std::list<T*> _list;
pthread_mutex_t _lock;
pthread_cond_t _cond;
};
'글 > 코딩' 카테고리의 다른 글
boost fusion을 이용한 멤버기반 class 복사하기 (0) | 2016.08.24 |
---|---|
C# 링크로 파일 추가 시 빌드때 자동 복사 (0) | 2015.01.29 |
nginx 설치 정리 (0) | 2013.04.17 |
C# Amazon S3Region 의미 (0) | 2013.04.16 |
ZooKeeper C# (0) | 2013.04.10 |