unix thread

cond_wait 虚假唤醒

https://anribras.github.io/tech/2018/01/12/c++11-%E5%B9%B6%E5%8F%912-%E4%BC%AA%E5%94%A4%E9%86%92/ pthread_mutex_lock pthread_mutex_unlock pthread_cond_wait pthread_cond_signal

如何避免锁丢失

Lock class. 比 lock unlock 要好.

如何避免死锁

线程安全,可重入,信号异步安全

https://blog.csdn.net/qq_38663729/article/details/80058980

自旋锁

ant 的 1 面的理解其实是对的.

无锁队列

还记得这个问题吗?https://www.cnblogs.com/catch/p/3161403.html //tbd Q: LockFree 指的是不用阻塞锁,但是可能通过 CAS 等原子操作来完成

unix 进程通讯

mmap

mmap 共享内存,在共享内存上创建无锁队列,实现收发. 想到谁了? Android 的 Binder!

client
server
binder service manager (类似dns,负责名称(ip)到binder实体(mac地址)的解析)
binder driver

Binder 实际的做法是在 driver 里做类似 mmap( binder_mmap)的操作.

Server进程的内核空间,用户空间,以及client的用户空间,都有地址映射到了同1段实际的物理内存.

另外通过定义好的 ioctl 命令实现协议细节: https://blog.csdn.net/ming_147/article/details/65633571


fd = open('/dev/binder');

//调用驱动的mmap内存映射,应该是映射到了/dev/zero而不是磁盘文件

ret = ioctl(fd,xxx,xxx);