At Sun, 10 Nov 2013 11:54:20 +0100, Samuel Thibault wrote: > > Neal H. Walfield, le Sun 10 Nov 2013 11:38:04 +0100, a écrit : > > At Sat, 9 Nov 2013 18:21:51 +0100, > > Samuel Thibault wrote: > > > > + pthread_spin_lock (&lock); > > > > + totalthreads--; > > > > + nreqthreads--; > > > > + pthread_spin_unlock (&lock); > > > > It might be a good idea use atomic operations instead of the spin lock > > (which is what the spin lock is using behind the scenes anyways). > > It may not be possible: further down there is a decision taken depending > on totalthreads/nreqthreads becoming 1, and thus you need a spinlock to > make that coherent with the ++/--.
Too bad. Perhaps combining the quantities into a single word as follows would work: atomic.add(threads, 1<<16 | 1) This has the further advantage of reducing the number of atomic operations. Neal