我的代码中有一个条件,如下所示
pthread_spin_lock(&slock);
if (round_robin_next_ == hp_count() - 1 ) {
round_robin_next_ = 0;
} else {
round_robin_next_++;
}
pthread_spin_unlock(&slock);
我使用自旋锁为了使上述线程安全,并确保每个线程获得与前一个相比的下一个 round_robin_next_ 值。如您所见,round_robin_next_ 是循环的,上升到某个值并返回 0。
我的问题是上面可以通过使用 gcc 内在函数以某种方式释放锁吗?或一些平台特定的说明?我在使用 gcc 4.7 的 64 位 Linux 上,我对平台特定的解决方案很好,如果它不能被移植也没关系。