线程同步@ Native Android

Nad*_*Rub 1 android pthreads linux-kernel android-ndk

Windows CRITICAL_SECTION通过使用自旋锁和信号灯来减少用户/内核切换,从而实现了比互斥锁更轻的方式(就锁定/解锁性能而言)。

即使互斥锁当前未被拥有/锁定,互斥锁也需要上下文切换,其中CRITICAL_SECTION会要求经过一段时间自旋锁定之后才会产生性能要求(导致更好的perf)。

我是Android Native开发人员的新手,请牢记Windows CRITICAL_SECTION,在Native Android中是否有等效功能?

有没有什么比pthread_mutex_轻@ Android?'pthread_mutex_ '即使互斥体尚未“拥有/锁定”(例如,在Windows中),还是要进行上下文切换?

牢记快速进入/退出关键部分'pthread_mutex_的使用成本是多少施加?

是否有用户模式自旋锁@本机Android?

任何帮助将不胜感激。

索菲的纳达夫

caf*_*caf 5

不,pthread_mutex_lock()Android的Bionic libc中没有为将普通互斥锁锁定在非竞争状态下强加上下文切换-使用简单的原子比较和交换,后跟内存屏障。同样,如果没有等待的进程,则解锁互斥锁不需要内核条目。

你可以找到仿生实施pthread_mutex_lock()pthread_mutex_unlock()libc/bionic/pthread.c在仿生libc中的来源,看看这个自己。

通常,您可以考虑pthread_mutex_lock()/ pthread_mutex_unlock()非常轻巧。