Open
Description
For instance:
static inline void _sl_read_lock_an(skiplist_node* node) {
for(;;) {
// Wait for active writer to release the lock
uint32_t accessing_next = 0;
ATM_LOAD(node->accessing_next, accessing_next);
while (accessing_next & 0xfff00000) {
YIELD();
ATM_LOAD(node->accessing_next, accessing_next);
}
ATM_FETCH_ADD(node->accessing_next, 0x1);
ATM_LOAD(node->accessing_next, accessing_next);
if ((accessing_next & 0xfff00000) == 0) {
return;
}
ATM_FETCH_SUB(node->accessing_next, 0x1);
}
}
This seems to be the cause of the problem here in #1 (deadlock). Do you just mean std::mutex free?
Metadata
Metadata
Assignees
Labels
No labels