Prev | Next |
void list_insert_wstm (list *l, int k) { node *n := new node(k); do { wstm transaction *tx := WSTMStartTransaction(); node *prev := WSTMRead(tx, &(l->head)); node *curr := WSTMRead(tx, &(prev->next)); while ( curr->key < k ) { prev := curr; curr := WSTMRead(tx, &(curr->next)); } n->next := curr; WSTMWrite(t, &(prev->next), n); } while ( !WSTMCommitTransaction(tx) ); }
9 |