int main(void){ int i; lock_a=0; FETCH_AND_ADD(1,lock_a); printf("%d\n",lock_a); for(i=0; i<10; i++){ pthread_create(&threads[i],NULL,&rdp,(void*)i); //pthread_join(threads[i], &status); } return 0; }
// Not threadsafe. lsn_t stasis_ringbuffer_nb_reserve_space(stasis_ringbuffer_t * ring, lsn_t sz) { if(freespace(ring) < sz) { return RING_FULL; } lsn_t ret = ring->wf; FETCH_AND_ADD(&ring->wf, sz); //ring->wf += sz; return ret; }