2010-02-10 31 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