スピンロックを削除し、そのロックによって使用されているリソースをすべて解放するには、pthread_spin_destroy(3C) 関数を使用します。
int pthread_spin_destroy(pthread_spinlock_t *lock);
#include <pthread.h> pthread_spinlock_t lock; int ret; ret = pthread_spin_destroy(&lock); /* spinlock is destroyed */
削除したロックを、pthread_spin_init() を呼び出して再び初期化する前に使用した場合、その結果は不定です。スレッドがロックを保持しているときに pthread_spin_destroy() が呼び出された場合、またはスレッドの初期化されていないスピンロックに対してこの関数が呼び出された場合の結果は不定です。
EBUSY
説明:スピンロックが別のスレッドで使用されている間 (たとえば、pthread_spin_lock() の呼び出しで使用されている間) にそのロックの初期化または削除の試行が検出されました。
EINVAL
説明:lock で指定された値が無効です。