| 102 | } |
| 103 | |
| 104 | void TIBMemPool::Return(TPtrArg<TIBMemSuperBlock> blk) { |
| 105 | TGuard<TMutex> gg(CacheLock); |
| 106 | Y_ASSERT(AtomicGet(blk->UseCount) == 0); |
| 107 | size_t sz = 1ull << blk->SzLog; |
| 108 | if (sz + AllocCacheSize > IB_MEM_POOL_SIZE) { |
| 109 | AllocCache.clear(); |
| 110 | AllocCacheSize = 0; |
| 111 | } |
| 112 | { |
| 113 | TVector<TIntrusivePtr<TIBMemSuperBlock>>& cc = AllocCache[blk->SzLog]; |
| 114 | cc.push_back(blk.Get()); |
| 115 | AllocCacheSize += sz; |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | void* TIBMemPool::ThreadFunc(void* param) { |
| 120 | BindToSocket(0); |