2

如果你不知道什么是futex和linuxthreads-0.9,请不要回复。

我可以将一个基于 futex 的互斥锁与来自 linuxthreads-0.8 或 -0.9 的互斥锁(在所有 glibc <=2.2 和所有 uClibc 中使用)混合在一起吗?

我需要进程间互斥锁(pshared 之一,PTHREAD_PROCESS_SHARED)。

那么,如果线程是由 linuxthreads pthread_manager 来启动和管理的,会不会被基于 futex 的 sleep 和 wake 混淆了呢?

我可以将基于 futex 的互斥锁用于进程间和线程间同步吗?

4

1 回答 1

2

我不明白你为什么不能。

显然,您将无法使用 pthread。您可能会将 pthread 库与旧的互斥锁一起使用,并且您需要在其他库中拥有 futex 代码。

您显然无法锁定 linuxthreads 互斥锁并使用 futex 函数解锁它,这将永远无法工作。

但是,如果一个线程在内核中被阻塞在等待 futex 上,我看不出它与在磁盘 I/O 操作上被阻塞有什么不同,并且 linuxthreads 处理得很好。

于 2010-02-10T18:14:34.727 回答