为什么glib不使用私人futexes?

时间:2015-03-06 09:46:47

标签: glib futex

在调查一些性能问题时,我最终在gthread-posix.c中结束了。 在那里我找到了代码,如:

static void __attribute__((noinline))
g_mutex_lock_slowpath (GMutex *mutex)
{
  /* Set to 2 to indicate contention.  If it was zero before then we
   * just acquired the lock.
   *
   * Otherwise, sleep for as long as the 2 remains...
   */
  while (exchange_acquire (&mutex->i[0], 2) != 0)
    syscall (__NR_futex, &mutex->i[0], (gsize) FUTEX_WAIT, (gsize) 2, NULL);
}

我很好奇为什么它不在这里使用FUTEX_WAIT_PRIVATE而在其他地方。至少在ARM上,非私有futexes明显变慢,而且我认为glib是用于多线程而不是共享内存中的进程间通信。

1 个答案:

答案 0 :(得分:0)

从2015年3月开始,GLib现在使用dependency。请参见this committhe related bug report