2010-02-10 53 views
2

如果你不知道什么是futex和linuxthreads-0.9,请不要回复。我可以混合使用基于futex的互斥体与glibc-2.2 linuxthreads互斥体吗?

我可以在linuxthreads-0.8或-0.9中使用基于互斥体的互斥体与互斥体(它在所有glibc < = 2.2以及所有uClibc中使用互斥体)吗?

我需要interprocess mutex(pshared one,PTHREAD_PROCESS_SHARED)。

所以,如果线程是由linuxthreads pthread_manager启动和管理的,它会被基于futex的sleep和wake混淆吗?

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

回答

2

我不明白你为什么不能。

显然,您将无法使用pthreads。您可能会使用带有旧互斥体的pthread库,并且您需要在其他库中包含futex代码。

你显然不能锁定一个linuxthreads互斥锁,并用futex函数解锁它,这永远不会工作。

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

+0

请问pthread_cancel具有异步标志吗? – osgx 2010-02-10 18:19:52

+1

@osgx:如果我知道的话。我不知道有谁曾经尝试过构建这种奇怪的代码组合。 – 2010-02-10 18:27:51