实现mutex同时支持32位应用程序和64位应用程序

时间:2014-08-04 23:08:41

标签: linux pthreads mutex shared-memory futex

众所周知,在Linux上的libpthread中,互斥锁在32位模式和64位模式下具有不同的大小。在32位应用程序和在同一Linux机器上运行的64位应用程序之间共享内存中无法共享互斥锁。 (如果我错了,请纠正我。)

我们正在尝试使用Linux中的futex实现我们自己的互斥库,以同时支持32位和64位应用程序。即,无论将库编译为32位还是64位,此互斥锁都具有相同的大小和结构。

此外,我们希望支持"强大的互斥"我们也认为这里存在问题。 AFAIK,glibc / libpthread创建' robust_list'为每个pthread并为每个pthread互斥锁维护robust_list。这与内核强大列表函数一起使用,以支持应用程序的强大互斥锁。

我的问题是:是否可以将自己的互斥锁附加到同一个' robust_list'由glibc / libpthread维护?如果没有,我是否必须使用不同的健壮列表并将新列表提供给内核?我怀疑如果我滚动自己的列表,应用程序就不能再使用-pthread了。即我自己的互斥代码无法与glibc pthread共存应用程序。

任何意见或建议表示赞赏。

感谢。

0 个答案:

没有答案