| | |
| | | #define SHM_QUEUE_ST_CLOSED 1 |
| | | #define SHM_QUEUE_ST_RECYCLED 2 |
| | | |
| | | #define SHM_QUEUE_ST_SET 50 |
| | | |
| | | struct shm_queue_status_t { |
| | | |
| | | int status; |
| | |
| | | |
| | | template <typename T> |
| | | T* shm_mm_attach(int key) { |
| | | void *ptr; |
| | | // T* tptr; |
| | | hashtable_t *hashtable = mm_get_hashtable(); |
| | | void *ptr; |
| | | // T* tptr; |
| | | hashtable_t *hashtable = mm_get_hashtable(); |
| | | ptr = hashtable_get(hashtable, key); |
| | | // printf("shm_mm_malloc_by_key malloc before %d, %p\n", key, ptr); |
| | | if(ptr == NULL || ptr == (void *)1 ) { |
| | | ptr = mm_malloc(sizeof(T)); |
| | | hashtable_put(hashtable, key, ptr); |
| | | new(ptr) T; |
| | | // printf("shm_mm_malloc_by_key use new %d, %p\n", key, ptr); |
| | | } |
| | | return (T*)ptr; |
| | | } |
| | |
| | | |
| | | int shm_mm_alloc_key(); |
| | | |
| | | #endif |
| | | typedef std::map<SHMString, int, std::less<SHMString>, SHM_STL_Allocator<std::pair<const SHMString, int> > > ProcDataZone; |
| | | |
| | | #endif |