반응형
#define INT_SLICE (sizeof(unsigned int)*8) #define MAX_ID 4095 #define ID_POOL_INT_SLICE_SIZE ((MAX_OAM_ID+1)/INT_SLICE) #define RET_OK 1 #define RET_NOK 0 unsigned int id_pool_table[ID_POOL_INT_SLICE_SIZE]; int alloc_id(unsigned int *new_id) { register int ii, jj; for(ii = 0; ii < ID_POOL_INT_SLICE_SIZE; ii++) { if(~id_pool_table[ii]) { for(jj = 0; jj < INT_SLICE; jj++) { if(!(id_pool_table[ii] & (0x80000000 >> jj))) { id_pool_table[ii] |= 0x80000000 >> jj; *new_id = ii*INT_SLICE + jj; return(RET_OK); } } } } return(RET_NOK); } int dealloc_id(unsigned int id) { id_pool_table[id/INT_SLICE] &= ~(0x80000000 >> (id % INT_SLICE)); return RET_OK; }
0 부터 MAX ID, 여기서는 4095 까지의 처음부터 순차적으로 LOOKUP해서 빈 슬롯을 찾아 할당합니다.
빠른 속도를 위해 register와 bit 연산으로 구혀되었습니다.
종종 쓰일지도...
빠른 속도를 위해 register와 bit 연산으로 구혀되었습니다.
종종 쓰일지도...
반응형
'IT Tech > Programming' 카테고리의 다른 글
블로그 카테고리 썸네일 이미지로 보기(masonry?) 적용과 문제점 (0) | 2019.01.26 |
---|---|
[C언어] Linux Pthread & Signal, Itimer 간단 예제와 의문!! (0) | 2013.10.24 |
[C언어] simple hash table - test code (0) | 2012.11.13 |
[SVN] ## 유용한 SVN 부가 명령어들 ## (0) | 2012.09.05 |
[C언어] c/c++ gcc 디버깅을 위한 gdb 초간단 사용팁 (0) | 2012.03.10 |
[C언어] uint2bin (0) | 2011.09.07 |
[Lex&Yacc] Yacc 명령 그리고 Debugging!! (0) | 2011.04.19 |
[C언어] IP 관련 매크로(Macro) (0) | 2011.04.14 |
[regex] 정규표현식 테스트 프로그램 - The Regex Coach (0) | 2011.04.13 |
[C언어] parse Mac Address (0) | 2011.04.08 |