Beispiel #1
0
void stpcDeferredDelete(stpcProxy *proxy, void (*freeData)(void *), void *data, void (*backoff)(int)) {
    stpcNode *node;
	int n = 0;
    
	while ((node = _newNode(proxy, true)) == NULL) {
		backoff(n++);
	}
    
    node->freeData = freeData;
    node->data = data;
    
    _queueNode(proxy, node);        
}
Beispiel #2
0
unsigned int stpcTryDeleteProxyNodes(stpcProxy *proxy, unsigned int count) {
    unsigned int n = 0;
    unsigned int current = atomic_load_explicit(&proxy->numNodes, memory_order_relaxed);
    
    for (n = 0; n < count && current > 1; n++) {
        stpcNode *node = _newNode(proxy, false);
        if (node == NULL)
            break;
        proxy->freeMem(node);
        current = atomic_sub_fetch_explicit(&proxy->numNodes, 1, memory_order_relaxed);
    }
    return n;
}
Beispiel #3
0
void PBnode::addNode(PBnode* node)
{
	PBrefPtr<PBnode> _newNode(node);
	_nodes.push_back(_newNode);
}